[英]ejb3 endpoint webservice jboss 7 throws illegalstateexception
I have a Web service defined as such: 我有这样定义的Web服务:
@WebService(endpointInterface = "com.example.Test",
serviceName = "TestWS")
@Stateless
public class TestWS implements Test {
public final String basic(final int number) {
return "{\"Basic\":\"true\",\"number\":" + number + "}";
}
}
@WebService
@Local
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public interface Test {
@WebMethod
public String basic(@WebParam(name = "number")int number);
}
and i can see the generated wsdl at [host]/TestWS/TestWS?wsdl, however when i call the webservice (using soapui 5.6.2) it throws an illegalstateexception: 并且我可以在[host] / TestWS / TestWS?wsdl上看到生成的wsdl,但是当我调用Web服务(使用soapui 5.6.2)时,它抛出了非法状态异常:
08:47:53,209 ERROR [org.jboss.as.webservices.invocation.InvocationHandlerEJB3] (http--127.0.0.1-8080-1) Method invocation failed with exception: null: java.lang.IllegalStateException
at org.jboss.as.webservices.invocation.AbstractInvocationHandlerEJB.getEJBMethod(AbstractInvocationHandlerEJB.java:138)
at org.jboss.as.webservices.invocation.AbstractInvocationHandlerEJB.invoke(AbstractInvocationHandlerEJB.java:103)
at org.jboss.wsf.stack.cxf.JBossWSInvoker._invokeInternal(JBossWSInvoker.java:181)
at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:127)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_45]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_45]
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:207)
at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:91)
at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:169)
at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:87)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:185)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:135)
at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) [jbossws-spi-2.0.3.GA.jar:2.0.3.GA]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
can anyone help me solve this? 谁能帮我解决这个问题? I have tried following the documentation but to no avail.
我尝试按照文档进行操作,但无济于事。
Check the spec , ch. 检查规格 ,ch。 3.1 "Service Implementation Bean" (emphasis mine):
3.1“服务实现Bean”(重点是我的):
The implementation bean MAY reference a service endpoint interface by using the
@WebService.endpointInterface
annotation.实现bean可以使用
@WebService.endpointInterface
注释来引用服务端点接口。 [...] In this case, the service implementation bean MUST NOT include any JSR-181 annotations other than@WebService
and@HandlerChain
.[...]在这种情况下, 服务实现bean不得包含
@WebService
和@HandlerChain
之外的任何JSR-181批注 。
So could you try removing the @WebMethod
annotation from the method in the class (the annotation in the interface method should suffice) and moving the @SOAPBinding
to the interface? 因此,您可以尝试从类中的方法中删除
@WebMethod
批注( 接口方法中的批注就足够了) 并将 @SOAPBinding
移动到接口吗?
Additionally the EJB method is marked final
. 另外,EJB方法被标记为
final
。 This is probably the problem ( ref ). 这可能是问题所在( ref )。
仅供大家参考,到这里结束时,我也遇到了这个错误,并且EJB / WS方法被意外声明为静态方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.