I am getting the below exception when trying to call service from SOAPUI
. When I open the endpoint in browser, it displays the wsdl fine.
WARN org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {http://contract.premsisc.usst.com/}PaidClaimFacadeService has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Message part {http://contract.premsisc.uss`enter code here`t.com/}findPaidClaims was not recognized. (Does it exist in service WSDL?) at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:194) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113) at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188) at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103) at javax.servlet.http.HttpServlet.service(HttpServlet.java:738) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1655) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1595) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104) at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:932) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:500) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
My wsdl as in WAS 7 server
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://contract.premsisc.usst.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PaidClaimFacadeService" targetNamespace="http://contract.premsisc.usst.com/"> <wsdl:types> <xs:schema xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://contract.premsisc.usst.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://contract.premsisc.usst.com/"> <xs:element name="findPaidClaims" type="tns:findPaidClaims"/> <xs:element name="findPaidClaimsResponse" type="tns:findPaidClaimsResponse"/> <xs:complexType name="findPaidClaims"> <xs:sequence> <xs:element minOccurs="0" name="Product" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="findPaidClaimsResponse"> <xs:sequence> <xs:element name="return" type="xs:boolean"/> </xs:sequence> </xs:complexType> <xs:element name="PremDiscountService" type="tns:PremDiscountService"/> <xs:complexType name="PremDiscountService"> <xs:sequence/> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="findPaidClaims"> <wsdl:part element="tns:findPaidClaims" name="parameters"></wsdl:part> </wsdl:message> <wsdl:message name="PremDiscountServiceException"> <wsdl:part element="tns:PremDiscountService" name="PremDiscountServiceException"></wsdl:part> </wsdl:message> <wsdl:message name="findPaidClaimsResponse"> <wsdl:part element="tns:findPaidClaimsResponse" name="parameters"></wsdl:part> </wsdl:message> <wsdl:portType name="PaidClaimFacade"> <wsdl:operation name="findPaidClaims"> <wsdl:input message="tns:findPaidClaims" name="findPaidClaims"></wsdl:input> <wsdl:output message="tns:findPaidClaimsResponse" name="findPaidClaimsResponse"></wsdl:output> <wsdl:fault message="tns:PremDiscountServiceException" name="PremDiscountServiceException"></wsdl:fault> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PaidClaimFacadeServiceSoapBinding" type="tns:PaidClaimFacade"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="findPaidClaims"> <soap:operation soapAction="" style="document"/> <wsdl:input name="findPaidClaims"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="findPaidClaimsResponse"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="PremDiscountServiceException"> <soap:fault name="PremDiscountServiceException" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="PaidClaimFacadeService"> <wsdl:port binding="tns:PaidClaimFacadeServiceSoapBinding" name="PaidClaimFacadePort"> <soap:address location="http://localhost:9084/premdisc/services/PaidClaimFacadeService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
My Soap Request in SOAPUI
:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:con="http://contract.premsisc.usst.com/"> <soapenv:Header/> <soapenv:Body> <con:findPaidClaims> <!--Optional:--> <Product>abc</Product> </con:findPaidClaims> </soapenv:Body> </soapenv:Envelope>
Soap Response in Soap UI:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring>Message part {http://contract.premsisc.usst.com/}findPaidClaims was not recognized. (Does it exist in service WSDL?)</faultstring> </soap:Fault> </soap:Body> </soap:Envelope>
and this is how I configured the jaxws:endpoint
<jaxws:endpoint id="paidClaimWs" implementor="#paidClaimFacadeImpl" address="/PaidClaimFacadeService" wsdlLocation="/wsdl/PaidClaimFacade.wsdl" serviceName="msg:PaidClaimFacadeService" endpointName="msg:PaidClaimFacadePort" xmlns:msg="http://contract.premsisc.usst.com/"> </jaxws:endpoint>
We do this by using the Code property of the SoapException object. The Code property will be set to Client if the exception is caused by an invalid input from the client. If the exception is caused by the Web service code (for example, the database server is down), the Code property will be set to Server.
An XML Web service method might throw a SoapException when clients call using SOAP. If an XML Web service throws the SoapException, other details can be added through the Actor, Code and Detail properties that cannot otherwise be set by an XML Web service method if another type of exception is thrown.
Error handling is important because it makes it easier for the end users of your code to use it correctly. Another important issue is that it makes your code easier to maintain.
This means that you are calling an operation which does not exits in your WSDL
file.
{http://contract.premsisc.usst.com/}findPaidClaims was not recognized
This is your target name space: http://contract.premsisc.usst.com/
And this is your operation: findPaidClaims
If you'll check your WSDL
you will see that there is no such operation like: findPaidClaims
.
EDIT
Now the problem is clear. Your namespaces in WSDL file are wrong. This is fixed WSDL and it will work. I don't know if you run some validation of your WSDL file, but my IntelliJ show the errors. So I fixed them:
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://contract.premdisc.hcsc.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PaidClaimFacadeService" targetNamespace="http://contract.premdisc.hcsc.com/"> <wsdl:types> <xs:schema xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://contract.premsisc.usst.com/types" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://contract.premsisc.usst.com/types"> <xs:element name="findPaidClaims" type="tns:findPaidClaims"/> <xs:element name="findPaidClaimsResponse" type="tns:findPaidClaimsResponse"/> <xs:complexType name="findPaidClaims"> <xs:sequence> <xs:element minOccurs="0" name="Product" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="findPaidClaimsResponse"> <xs:sequence> <xs:element name="return" type="xs:boolean"/> </xs:sequence> </xs:complexType> <xs:element name="PremDiscountService" type="tns:PremDiscountService"/> <xs:complexType name="PremDiscountService"> <xs:sequence/> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="findPaidClaims"> <wsdl:part element="tns:findPaidClaims" name="parameters"></wsdl:part> </wsdl:message> <wsdl:message name="PremDiscountServiceException"> <wsdl:part element="tns:PremDiscountService" name="PremDiscountServiceException"></wsdl:part> </wsdl:message> <wsdl:message name="findPaidClaimsResponse"> <wsdl:part element="tns:findPaidClaimsResponse" name="parameters"></wsdl:part> </wsdl:message> <wsdl:portType name="PaidClaimFacade"> <wsdl:operation name="findPaidClaims"> <wsdl:input message="tns:findPaidClaims" name="findPaidClaims"></wsdl:input> <wsdl:output message="tns:findPaidClaimsResponse" name="findPaidClaimsResponse"></wsdl:output> <wsdl:fault message="tns:PremDiscountServiceException" name="PremDiscountServiceException"></wsdl:fault> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PaidClaimFacadeServiceSoapBinding" type="tns:PaidClaimFacade"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="findPaidClaims"> <soap:operation soapAction="" style="document"/> <wsdl:input name="findPaidClaims"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="findPaidClaimsResponse"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="PremDiscountServiceException"> <soap:fault name="PremDiscountServiceException" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="PaidClaimFacadeService"> <wsdl:port binding="tns:PaidClaimFacadeServiceSoapBinding" name="PaidClaimFacadePort"> <soap:address location="http://localhost:9084/premdisc/services/PaidClaimFacadeService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
The problem was that you had different namespace as your xmlns:tns
and targetNamespace
. Look closely at your WSDL.
xmlns:tns="http://contract.premdisc.hcsc.com/" targetNamespace="http://contract.premsisc.usst.com/"
You see that in your file they are different, but they must be the same. And for your XSD you need to use different namespace. Something like:
xmlns:tns="http://contract.premsisc.usst.com/types"
As it was in your file:
xmlns:tns="http://contract.premsisc.usst.com/" targetNamespace="http://contract.premdisc.hcsc.com/"
Ass you can see they are also different. Compare the file I fixed and your file and will see the difference. Try it with fixed file and it will work.
I know this is quite old, but for some of you that stumble upon it: I've had the same problem, the cause? I had "old" WSDL loaded in my SOAPUI, while I changed some things in my "new" WSDL. Hence the problems, try reloading the WSDL in SOAPUI or deleting it and loading once again, then checking if you get the same error. Hope this helps someone!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With