小编use*_*528的帖子

返回错误的JAX-WS服务器端SOAPHandler在WebSphere v8上获得"内部错误"

我有一个服务器端JAX-WS SOAPHandler(在WebSphere v8上),在某些情况下需要使用它在String变量中的SOAP响应来响应客户端(让我们调用它responseXml).

当responseXml包含成功(即非故障)SOAP消息时,JAX-WS会正确地将响应发送到客户端.但是,当responseXml包含SOAP错误消息时,会发生"内部错误",并且客户端获得的错误响应与其中的不同responseXml,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <soapenv:Fault xmlns:axis2ns1="http://schemas.xmlsoap.org/soap/envelope/">
         <faultcode>axis2ns1:Server</faultcode>
         <faultstring>Internal Error</faultstring>
         <detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

将以下错误写入控制台:

[10/9/12 12:21:04:177 EDT] 00000025 AxisEngine    E org.apache.axis2.engine.AxisEngine receive An error was detected during JAXWS processing
                             org.apache.axis2.AxisFault: An error was detected during JAXWS processing
at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:208)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:198)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at com.ibm.ws.websvcs.transport.http.WASAxis2Servlet.doPost(WASAxis2Servlet.java:1466)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
...
Run Code Online (Sandbox Code Playgroud)

这是一个简化SOAPHandler,说明了这个问题.(请注意,responseXml这里显示的值只是一个示例.在我的实际中SOAPHandler,响应不是硬编码的,而是从数据库中读取的.我只是想尽可能地展示最简单的示例代码.)

package simplified.demo;

import java.io.ByteArrayInputStream;
import java.util.Set;

import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import …
Run Code Online (Sandbox Code Playgroud)

websphere soap jax-ws websphere-8

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

jax-ws ×1

soap ×1

websphere ×1

websphere-8 ×1