Java 仅配置了SOAP12,但出现错误“;传入的SOAP消息协议是版本1.1“;
我已经使用JAX-WS在WebSphere(7)中配置了WebService。在上周,所有内容都进行了测试,但今天,在清理和刷新之后,我发现一个错误: 原因:javax.xml.ws.soap.SOAPFaultException:传入的soap消息 协议的版本是1.1,但端点是为SOAP1.2配置的。 这是不受支持的。在 org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.createSystemException(MethodMarshallerUtils.java:1310) 在 org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.demarshalFaultResponse(MethodMarshallerUtils.java:1036) 在 org.apache.axis2.jaxws.marshaller.impl.alt.DocLitBareMethodMarshaller.demarshalFaultResponse(DocLitBareMethodMarshaller.java:412) 在 org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.getFaultResponse(JAXWSProxyHandler.java:529) 在 org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.createResponse(JAXWSProxyHandler.java:470) 在 org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:377) 在 org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:185) 最令人惊讶的是,SOAP1.1从未在那里配置过。从一开始,只使用了SOAP 1.2。以下是我的WSDL摘要:Java 仅配置了SOAP12,但出现错误“;传入的SOAP消息协议是版本1.1“;,java,web-services,soap,websphere,jax-ws,Java,Web Services,Soap,Websphere,Jax Ws,我已经使用JAX-WS在WebSphere(7)中配置了WebService。在上周,所有内容都进行了测试,但今天,在清理和刷新之后,我发现一个错误: 原因:javax.xml.ws.soap.SOAPFaultException:传入的soap消息 协议的版本是1.1,但端点是为SOAP1.2配置的。 这是不受支持的。在 org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.createSystemException(
以下是Servlet类的标题注释:
@javax.jws.WebService(wsdlLocation = "wsdl/myservice_v3.wsdl",
endpointInterface = "my.service.V3",
targetNamespace = "http://service.my/v3",
serviceName = "myservice_v3",
portName = "port_soap12_v3")
@javax.xml.ws.BindingType(value = javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
以及从相同WSDL生成的客户端注释:
@WebServiceClient(name = "myservice_v3",
targetNamespace = "http://service.my/v3",
wsdlLocation = "../../wsdl/myservice_v3.wsdl")
一切都已经开始了。它是在IBMRAD8.0中测试的,因此我假设存在一些RAD问题,而不是WebSphere问题或JAX WS问题,但也可能是这样,我看不到定义中明显缺失的东西
注意:服务名称和名称空间是出于保密原因而更改的,因此不要查找名称空间不匹配:)这是客户端的问题,特别是JAX-WS生成的客户端存根构造函数的问题 我通过调用3参数构造函数解决了这个问题:
MyServiceV3 service = new MyServiceV3(
MyService.class.getResource("/wsdl/myservice_v3.wsdl",
new QName("http://service.my/v3"), "myservice_v3");
而不是基于strage生成代码的输出的无参数构造函数:
baseUrl = MyServiceV3 .class.getResource(".");
url = new URL(baseUrl, "../../wsdl/myservice_v3.wsdl");
如果您的SOAP客户端正在发布SOAP 1.1。请求,则这是您应该在服务器中看到的消息。看来您调查的重点应该是SOAP客户端。为什么它要发送SOAP 1.1请求有效负载,而不遵守WSDL中规定的SOAP 1.2绑定?