我尝试使用Oracle WebLogic 10.3.4和jax-ws api创建SOAP Web服务。
目前,我试图测试一个简单的例子:
package HelloService.hello;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
public String getHelloWorld(@WebParam(name = "str") String input);
}
package HelloService.hello;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(endpointInterface = "HelloService.hello.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String getHelloWorld(@WebParam(name = "str") String input) {
return "Hello World message: " + input;
}
}
在我的WebLogic安装中,我有一个集群和一个服务器,我部署了这个Web服务。部署之后,我可以毫无问题地访问wsdl文件,但是当我向Web服务发送请求时,我得到以下异常而不是预期的响应(我用Eclipse的SoapUI插件测试Web服务) :
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>ClusterRoutingTubeUtils weblogic.wsee.jaxws.cluster.ClusterRoutingTubeUtils@782d8a2f not ready, no WseeClusterRoutingRuntimeMBean/WseeRuntimeMBean</faultstring>
<detail>
<ns2:exception class="java.lang.IllegalStateException" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
<message>ClusterRoutingTubeUtils weblogic.wsee.jaxws.cluster.ClusterRoutingTubeUtils@782d8a2f not ready, no WseeClusterRoutingRuntimeMBean/WseeRuntimeMBean</message>
<ns2:stackTrace>
<ns2:frame class="weblogic.wsee.jaxws.cluster.ClusterRoutingTubeUtils" file="ClusterRoutingTubeUtils.java" line="87" method="ensureSOAPRouter"/>
<ns2:frame class="weblogic.wsee.jaxws.cluster.ClusterRoutingTubeUtils" file="ClusterRoutingTubeUtils.java" line="95" method="handleInboundMessage"/>
<ns2:frame class="weblogic.wsee.jaxws.cluster.ClusterRoutingServerTube" file="ClusterRoutingServerTube.java" line="70" method="processRequest"/>
<ns2:frame class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="866" method="__doRun"/>
<ns2:frame class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="815" method="_doRun"/>
<ns2:frame class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="778" method="doRun"/>
<ns2:frame class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="680" method="runSync"/>
<ns2:frame class="com.sun.xml.ws.server.WSEndpointImpl$2" file="WSEndpointImpl.java" line="403" method="process"/>
<ns2:frame class="com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit" file="HttpAdapter.java" line="532" method="handle"/>
<ns2:frame class="com.sun.xml.ws.transport.http.HttpAdapter" file="HttpAdapter.java" line="253" method="handle"/>
<ns2:frame class="com.sun.xml.ws.transport.http.servlet.ServletAdapter" file="ServletAdapter.java" line="140" method="handle"/>
<ns2:frame class="com.sun.xml.ws.transport.http.servlet.WSServletDelegate" file="WSServletDelegate.java" line="129" method="doGet"/>
<ns2:frame class="com.sun.xml.ws.transport.http.servlet.WSServletDelegate" file="WSServletDelegate.java" line="160" method="doPost"/>
<ns2:frame class="com.sun.xml.ws.transport.http.servlet.WSServlet" file="WSServlet.java" line="75" method="doPost"/>
<ns2:frame class="javax.servlet.http.HttpServlet" file="HttpServlet.java" line="727" method="service"/>
<ns2:frame class="javax.servlet.http.HttpServlet" file="HttpServlet.java" line="820" method="service"/>
<ns2:frame class="weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction" file="StubSecurityHelper.java" line="227" method="run"/>
<ns2:frame class="weblogic.servlet.internal.StubSecurityHelper" file="StubSecurityHelper.java" line="125" method="invokeServlet"/>
<ns2:frame class="weblogic.servlet.internal.ServletStubImpl" file="ServletStubImpl.java" line="300" method="execute"/>
<ns2:frame class="weblogic.servlet.internal.ServletStubImpl" file="ServletStubImpl.java" line="183" method="execute"/>
<ns2:frame class="weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction" file="WebAppServletContext.java" line="3717" method="wrapRun"/>
<ns2:frame class="weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction" file="WebAppServletContext.java" line="3681" method="run"/>
<ns2:frame class="weblogic.security.acl.internal.AuthenticatedSubject" file="AuthenticatedSubject.java" line="321" method="doAs"/>
<ns2:frame class="weblogic.security.service.SecurityManager" file="SecurityManager.java" line="120" method="runAs"/>
<ns2:frame class="weblogic.servlet.internal.WebAppServletContext" file="WebAppServletContext.java" line="2277" method="securedExecute"/>
<ns2:frame class="weblogic.servlet.internal.WebAppServletContext" file="WebAppServletContext.java" line="2183" method="execute"/>
<ns2:frame class="weblogic.servlet.internal.ServletRequestImpl" file="ServletRequestImpl.java" line="1454" method="run"/>
<ns2:frame class="weblogic.work.ExecuteThread" file="ExecuteThread.java" line="207" method="execute"/>
<ns2:frame class="weblogic.work.ExecuteThread" file="ExecuteThread.java" line="176" method="run"/>
</ns2:stackTrace>
</ns2:exception>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>
我在谷歌搜索了一些WebLogic版本在群集中部署Web服务时遇到此问题。有一个修复,但我无法应用它。有没有解决方法?这是一种常见情况吗?
使用WebLogic开发SOAP Web服务有哪些替代方法?
事先提出
答案 0 :(得分:0)
我遇到了类似的问题。我们应用了weblogic补丁来解决这个问题,事情就开始起作用了。 Jax ws有时无法在集群环境中工作,您可以尝试直接指向已部署的服务器URL以使其工作。
我们仍然面临http服务器到websphere的问题。我们直接指向webphere部署位置以使工作正常。