SOAPUI
からサービスを呼び出そうとすると、次の例外が発生します。ブラウザでエンドポイントを開くと、wsdlが正常に表示されます。
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)
WAS 7サーバーのような私のWSDL
<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>
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 UIのSOAP応答:
<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>
そして、これは私が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>
これは、WSDL
ファイルで終了しない操作を呼び出していることを意味します。
{http://contract.premsisc.usst.com/}findPaidClaims was not recognized
これがターゲットの名前空間です:http://contract.premsisc.usst.com/
そして、これはあなたの操作です:findPaidClaims
WSDL
を確認すると、findPaidClaims
のような操作はありません。
[〜#〜] edit [〜#〜]
これで問題は明らかになりました。 WSDLファイルの名前空間が間違っています。これは固定WSDLであり、機能します。 WSDLファイルの検証を実行したかどうかはわかりませんが、IntelliJでエラーが表示されます。だから私はそれらを修正しました:
<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>
問題は、xmlns:tns
およびtargetNamespace
。 WSDLをよく見てください。
xmlns:tns="http://contract.premdisc.hcsc.com/"
targetNamespace="http://contract.premsisc.usst.com/"
ファイル内では異なることがわかりますが、同じでなければなりません。 XSDには、異なる名前空間を使用する必要があります。何かのようなもの:
xmlns:tns="http://contract.premsisc.usst.com/types"
ファイルにあったとおり:
xmlns:tns="http://contract.premsisc.usst.com/"
targetNamespace="http://contract.premdisc.hcsc.com/"
あなたが見ることができるお尻も異なっています。修正したファイルと自分のファイルを比較すると、違いがわかります。修正されたファイルで試してみてください。
私はこれがかなり古いことを知っていますが、それにつまずくあなたの何人かのために:私は同じ問題を抱えました、原因? SOAPUIに「古い」WSDLをロードしましたが、「新しい」WSDLの一部を変更しました。したがって、問題は、SOAPUIでWSDLをリロードするか、削除してもう一度ロードしてから、同じエラーが発生するかどうかを確認してください。これが誰かを助けることを願っています!