Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

exception when trying to call webservice

Tags:

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> 
like image 514
Mahi G Avatar asked Aug 20 '12 15:08

Mahi G


People also ask

How do you handle exceptions in Web services?

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.

What exception is thrown when an error occurs while invoking the Web Service?

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.

How important is it to include error or exception handling in creating Web applications?

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.


2 Answers

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.

like image 52
Paulius Matulionis Avatar answered Oct 02 '22 02:10

Paulius Matulionis


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!

like image 22
Thasar Avatar answered Oct 02 '22 01:10

Thasar