Websphere 7 中的 JAX-WS 客户端失败并显示 java.io.UnsupportedEncodingException:text/xml

JAX-WS client in Websphere 7 fails with java.io.UnsupportedEncodingException: text/xml

在 IIS 中部署了一个 AXIS2 网络服务。我使用 wsdl 生成了 JAX-WS 客户端。如果我作为独立使用,即与 Oracle JDK.

一起使用,它工作正常

我必须从部署在 websphere 7 中的应用程序调用 Web 服务。因此,我在我的应用程序中包含了 jax-ws 生成的客户端(作为 jar)。当应用程序调用 Web 服务时,它会失败并出现 java.io.UnsupportedEncodingException: text/xml 异常。 Websphere 7 为jax-ws 使用axis2 相关的jar 文件。

异常详情:

原因:javax.xml.stream.XMLStreamException:java.io.UnsupportedEncodingException:text/xml

at com.ibm.xml.xlxp2.api.stax.msg.StAXMessageProvider.throwXMLStreamException(StAXMessageProvider.java:67)
at com.ibm.xml.xlxp2.api.stax.XMLStreamReaderImpl.setDocumentEntity(XMLStreamReaderImpl.java:401)
at com.ibm.xml.xlxp2.api.stax.XMLInputFactoryImpl.setDocumentEntity(XMLInputFactoryImpl.java:1440)
at com.ibm.xml.xlxp2.api.stax.XMLInputFactoryImpl.createXMLStreamReader(XMLInputFactoryImpl.java:1455)
at com.ibm.xml.xlxp2.api.stax.XMLInputFactoryImpl.createXMLStreamReaderInternal(XMLInputFactoryImpl.java:1555)
at com.ibm.xml.xlxp2.api.stax.XMLInputFactoryImpl.createXMLStreamReader(XMLInputFactoryImpl.java:1626)
at org.apache.axiom.om.util.StAXUtils.run(StAXUtils.java:618)
at java.security.AccessController.doPrivileged(AccessController.java:251)
at org.apache.axiom.om.util.StAXUtils.createSecureXMLStreamReader(StAXUtils.java:614)
at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:58)
at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:191)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:139)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:102)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:66)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:581)
... 41 more

原因:java.io.UnsupportedEncodingException:text/xml

at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:115)
at java.io.InputStreamReader.<init>(InputStreamReader.java:93)
at com.ibm.xml.xlxp2.api.util.encoding.ByteStreamDataSource.convertToCharacterStream(ByteStreamDataSource.java:278)
at com.ibm.xml.xlxp2.api.util.encoding.PlatformEncodingSupport.loadFromByteStream(PlatformEncodingSupport.java:48)
at com.ibm.xml.xlxp2.api.util.SimpleParsedEntityFactory.detectEncodingSetSource(SimpleParsedEntityFactory.java:503)
at com.ibm.xml.xlxp2.api.util.SimpleParsedEntityFactory.setByteStreamSource(SimpleParsedEntityFactory.java:281)
at com.ibm.xml.xlxp2.api.sax.impl.SAX2ParsedEntityFactory.readFromInputSource(SAX2ParsedEntityFactory.java:122)
at com.ibm.xml.xlxp2.api.sax.impl.SAX2ParsedEntityFactory.createParsedEntity(SAX2ParsedEntityFactory.java:76)
at com.ibm.xml.xlxp2.api.stax.XMLStreamReaderImpl.setDocumentEntity(XMLStreamReaderImpl.java:394)
... 58 more

编辑:更多信息.. 网络服务正在返回响应。似乎 websphere 无法处理响应,即失败并出现问题中指定的异常。

请帮忙。

异常是因为响应无效 header *text/xml;charset:UTF-8*. It supposed to be *text/xml;charset=UTF-8*。 IBM JDK 在解析方面更严格,而 Oracle JDK 则不是。如果有人在调用任何外部 Web 服务时在 Websphere 应用程序服务器中遇到类似于 "java.io.UnsupportedEncodingException: text/xml" 的异常,希望这会有所帮助。