设为首页 收藏本站
查看: 898|回复: 0

[经验分享] xfire1.2.6在 weblogic下传输二进制数据的时候报异常的解决方案

[复制链接]

尚未签到

发表于 2017-2-18 09:58:20 | 显示全部楼层 |阅读模式
手头负责了一个j2ee项目是跟CAD二次开发平台做交互的。通讯通过webservice来做,文件传输通过byte[]数组。项目进行到最后的测试阶段,突然发现原来在tomcat跑得好好的程序在weblogic不能用了。
异常信息如下:
严重: Fault occurred!
java.lang.UnsupportedOperationException
        at weblogic.xml.stax.XMLStreamReaderBase.getTextCharacters(XMLStreamReaderBase.java:487)
        at org.codehaus.xfire.util.stax.DepthXMLStreamReader.getTextCharacters(DepthXMLStreamReader.java:179)
        at org.codehaus.xfire.util.stax.DepthXMLStreamReader.getTextCharacters(DepthXMLStreamReader.java:179)
        at org.codehaus.xfire.aegis.type.basic.Base64Type.readObject(Base64Type.java:71)
        at org.codehaus.xfire.aegis.type.basic.ArrayType.readCollection(ArrayType.java:80)
        at org.codehaus.xfire.aegis.type.basic.ArrayType.readObject(ArrayType.java:48)
百度+谷歌之后,发现原来是项目中的webservice框架xfire1.2.6跟weblogic9.2有冲突。
大致的解决方法无非是改变jar包的加载顺序,或者改接口方法将byte[]改成string。
但是项目非常赶,而且cad二次开发平台是外包方做的,同时外包方人不在现场,联调起来非常痛苦,如果再让他们改接口,时间耽误不起啊。
经过了一个晚上的尝试,我发现其实第二种方法在不更改用户的接口情况下,将服务端的接口方法中的byte[]改成string可行。
通过分析xfire生成的wsdl文件后,我发现byte数组在里面描述的类型为xsd:base64Binary,这样的话是不是意味着实际上byte最后还是会转换成base64编码传递给客户端呢?
如果是的,那么如果我自己把接口定义更改为string,但是客户端的接口不做更改,他们还是用byte[]传递给我,我这边接收到的会不会是base64编码。
于是我尝试了一下,发现传递过来的字符串果然是base64编码。然后我再转换成byte数组就ok了。
byte[] result = new sun.misc.BASE64Decoder().decodeBuffer(str.trim());
这样我的程序就正常在weblogic上面运行了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-343736-1-1.html 上篇帖子: 加密weblogic 用户名和口令到文件 来避免在脚本中使用硬编码来实现对资源的访问 下篇帖子: 服务器自动重启,服务器宕机重启,自动重启weblogic,批处理自动重启服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表