Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅配置了SOAP12,但出现错误“;传入的SOAP消息协议是版本1.1“;_Java_Web Services_Soap_Websphere_Jax Ws - Fatal编程技术网

Java 仅配置了SOAP12,但出现错误“;传入的SOAP消息协议是版本1.1“;

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(

我已经使用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摘要:


以下是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绑定?