Java – the response of a web service using Apache CXF displays “unbound operation information..”
The problem description may be long Please be patient and provide any help, because I am a new network service
What I did: I created a web service in Java using Apache CXF RI I just created a class and used the bottom-up development method to generate SEI, WSDL and XML files
The problem is: now, if I request "http: / / localhost: 8084 / deepthoughtws / services / deepthoughtport / whatistheanswer", unbound operation information will be output when calling the unknown method The reply is as follows:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <soap:Fault> <faultcode>soap:Server</faultcode> <faultstring>No binding operation info while invoking unkNown method with params unkNown.</faultstring> </soap:Fault> </soap:Body> </soap:Envelope>
The generated WSDL is:
<wsdl:deFinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.service.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="DeepThoughtService" targetNamespace="http://ws.service.com/"> <wsdl:types> <schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.service.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://ws.service.com/" schemaLocation="http://localhost:8084/DeepThoughtWS/services/DeepThoughtPort?xsd=deepthought_schema1.xsd" /> </schema> </wsdl:types> <wsdl:message name="whatIsTheAnswerResponse"> <wsdl:part element="tns:whatIsTheAnswerResponse" name="parameters"></wsdl:part> </wsdl:message> <wsdl:message name="whatIsTheAnswer"> <wsdl:part element="tns:whatIsTheAnswer" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="DeepThought"> <wsdl:operation name="whatIsTheAnswer"> <wsdl:input message="tns:whatIsTheAnswer" name="whatIsTheAnswer"></wsdl:input> <wsdl:output message="tns:whatIsTheAnswerResponse" name="whatIsTheAnswerResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="DeepThoughtServiceSoapBinding" type="tns:DeepThought"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="whatIsTheAnswer"> <soap:operation soapAction="" style="document" /> <wsdl:input name="whatIsTheAnswer"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="whatIsTheAnswerResponse"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="DeepThoughtService"> <wsdl:port binding="tns:DeepThoughtServiceSoapBinding" name="DeepThoughtPort"> <soap:address location="http://localhost:8084/DeepThoughtWS/services/DeepThoughtPort" /> </wsdl:port> </wsdl:service> </wsdl:deFinitions>
Deepthought courses include:
@WebService(targetNamespace = "http://ws.service.com/",portName = "DeepThoughtPort",serviceName = "DeepThoughtService") public class DeepThought { public String whatIsTheAnswer(@WebParam(name = "arg0") String interviewer) { return ("The answer " + interviewer); } }
The console output at the time of the request also shows some errors:
Feb 05,2013 3:59:14 PM org.apache.cxf.service.invoker.AbstractInvoker invoke SEVERE: Invocation without a binding operation. Feb 05,2013 3:59:14 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging WARNING: Interceptor for {http://ws.service.com/}DeepThoughtService has thrown exception,unwinding Now org.apache.cxf.interceptor.Fault: No binding operation info while invoking unkNown method with params unkNown. at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:59) at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) at java.util.concurrent.Executors$RunnableAdapter.call(UnkNown Source) at java.util.concurrent.FutureTask$Sync.innerRun(UnkNown Source) at java.util.concurrent.FutureTask.run(UnkNown Source) at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:218) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:163) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(UnkNown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(UnkNown Source) at java.lang.Thread.run(UnkNown Source) Feb 05,2013 3:59:14 PM org.apache.cxf.services.DeepThoughtService.DeepThoughtPort.DeepThought INFO: Outbound Message --------------------------- ID: 5 Response-Code: 500 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>No binding operation info while invoking unkNown method with params unkNown.</faultstring></soap:Fault></soap:Body></soap:Envelope>
Solution
Source of the above explanation.
Possible solutions:
@WebService(targetNamespace = "http://ws.service.com/",serviceName = "DeepThoughtService",endpointInterface = "your.pck.DeepThoughtService",wsdlLocation = "WEB-INF/wsdl/DeepThoughtService.wsdl") public class DeepThought { @WebMethod(action = "whatIsTheAnswer") public String whatIsTheAnswer(@WebParam(name = "arg0") String interviewer) { return ("The answer " + interviewer); } }
What I'm going to do is add the WSDL location and endpointinterface to your @ WebService In addition, you use Java first method, so your method should be annotated with @ webmethod (action = "whatistheanswer") So if the method has no annotation, CXF "understands" that your web service does not contain any methods at all, and says: there is no binding operation information, but the calling of unknown methods and params are unknown
You can also see:
> Developing a Service using JAX-WS