如题,把web service部署到weblogic中,在weblogic中的客户端调用该服务,返回的二进制数据(byte[])就会出错,错误信息如下:
org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Fault: java.lang.UnsupportedOperationException
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:92)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy59.GetMap(Unknown Source)
at whu.maingrp.WMS.JServletWMS.doGet(JServletWMS.java:45)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
Truncated. see log file for complete stacktrace
org.codehaus.xfire.fault.XFireFault: Fault: java.lang.UnsupportedOperationException
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Client.onReceive(Client.java:410)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
Truncated. see log file for complete stacktrace
java.lang.UnsupportedOperationException
at weblogic.xml.stax.XMLStreamReaderBase.getTextCharacters(XMLStreamReaderBase.java:487)
at org.codehaus.xfire.util.stax.DepthXMLStreamReader.getTextCharacters(DepthXMLStreamReader.java:180)
at org.codehaus.xfire.util.stax.DepthXMLStreamReader.getTextCharacters(DepthXMLStreamReader.java:180)
at org.codehaus.xfire.aegis.type.basic.Base64Type.readObject(Base64Type.java:74)
at org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
Truncated. see log file for complete stacktrace但是在tomcat中调用该服务,可以获取返回的二进制数据(byte[])
非常奇怪,好像有人遇到过类似的问题,但都没给出具体的解决办法,希望哪位曾遇到过类似问题并解决的人给个思路。
有人提到过什么用base64编码,不知对否?

解决方案 »

  1.   

    这个问题主要好像是和你的WebService包有关系,可以检查你的WebService包,我原来也遇到过类似问题
      

  2.   

    WebService包就用到了xifre 1.2 core libraries和xfire 1.2 http client libraries两个包。当然工程中还用到了其他的包,那些包是别人要用的。不知道在WebLogic里发布服务和在tomcat中在细节上有啥不一样?