一个webservices项目能在Tomcat上部署成功 也能访问接口 现在在weblogic上部署 就报错了 就在本地测试用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个webservices项目能在Tomcat上部署成功 也能访问接口 现在在weblogic上部署 就报错了 就在本地测试用相关的知识,希望对你有一定的参考价值。
Error creating bean with name 'realtime': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.jws.WebService.portName()Ljava/lang/String; (这是控制台的具体错误)
参考技术A 包问题转自网络
问题一:
调用接口,报java.lang.NoSuchMethodError: javax.jws.WebService.portName()Ljava/lang/String 异常。
问题一原因:
经过在网上google+baidu,找到了问题所在,原因是weblogic里面用到包%WL_HOME%\server\lib
\weblogic.jar里面有javax.jws.WebService这个类,版本跟xfire里面用到的包xfire-jsr181-api-
1.0-M1.jar里面的类javax.jws.WebService版本不一致,而运行时默认优先加载的是weblogic.jar里面的类,所以引
起冲突。
问题一解决方法:
把xfire的包xfire-jsr181-api-1.0-M1.jar复制到%WL_HOME%\server\lib\目录下,并且修改配置文件%WL_HOME%\common\bin\commEnv.cmd(linux下修改commEnv.sh)。
找到SET WEBLOGIC_CLASSPATH=
这行,把%WL_HOME%\server\lib\xfire-jsr181-api-1.0-M1.jar加在%WL_HOME%\server
\lib\weblogic.jar前面,然后保存。重启weblogic问题一解决。
问题二:
问题一解决后以为万事大吉了,谁知调用接口时,新的问题来了。报:
java.lang.UnsupportedOperationException
at weblogic.xml.stax.XMLStreamReaderBase.getTextCharacters(XMLStreamRead
erBase.java:487)
问题二原因:
找了半天没找到真正原因,只知道大家都说接口返回是byte[]就会出现以上异常。
问题二解决方法:
这是个不完美的解决方法,需要更改接口,把byte[]用base64进行编码,编码后byte[]变成了String,然后客户端收到String后用
base64解码成byte[]。异常不再出现,成功将文件通过webservice传输到客户端。希望有高人提出更好的解决方法供大家讨论。
以上是关于一个webservices项目能在Tomcat上部署成功 也能访问接口 现在在weblogic上部署 就报错了 就在本地测试用的主要内容,如果未能解决你的问题,请参考以下文章
tomcat 如何发布并访问一个webservice项目;大侠们最好是能把步骤写详细点,有例子的更好!谢谢!
WebService -- Java 实现之 CXF ( 使用:Spring+CXF+Tomcat发布webService)