尝试从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)
我的wsdl在WAS 7服务器
<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>
肥皂响应在肥皂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>
这是我如何配置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.
编辑
现在问题很清楚.您在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/"