必须由SOAPMessage的所有子类覆盖setProperty

Pab*_*ino 35 java jboss web-services jax-ws jboss5.x

我正在尝试在JBoss 5.1.0上的WAR应用程序中部署一些Web服务.

我使用JAX-WS工具从现有的wsdl创建了源文件wsgen.这创建了Service文件和@XmlType带注释的clases,它们将充当请求和响应包装器.

这个类在JBoss 4.2.3上运行良好,但是当转向JBoss 5.1.0时,我得到了这个例外.

java.lang.UnsupportedOperationException:必须由SOAPMessage的所有子类重写setProperty

我的配置:

  • Windows XP SP3(但在Vista和Linux上都一样)
  • Sun JDK 1.6.0_17
  • 用于jdk6的JBoss 5.1.0 GA

提前致谢!

Pio*_*ski 32

有一些事情可能会出错,所以我会告诉你在我的情况下有什么帮助(类似于你的,我使用的是JDK 1.6.0_13).

问题在于JAR不匹配.首先确保JBoss使用JDK 1.6检查你的JAVA_HOME环境.变量.其次确保您的类是使用JDK 1.6编译的.如果从Eclipse运行项目,请确保Eclipse使用正确的JDK,如果从Eclipse运行JBoss则相同.

我猜你说得对,所以有一些魔力.运行客户端使用$ JBOSS_HOME/client中的库,而只使用$ JBOSS_HOME/lib/endorsed中提供的库.显然,如果您使用任何其他与JAX-WS无关的API(如JPA或EJB或Servlet),则可以将它们添加到类路径中,但使用lib/endorsed JAX-WS JAR.

在JBoss 5.1的早期版本中,在JBoss的早期版本中,它有助于我的特殊情况,例如尝试添加java选项-Dsun.lang.ClassLoader.allowArraySyntax = true或/和-Djava.endorsed.dirs =启动客户端和JBoss时,$ JBOSS_HOME/lib/endors.

  • 谢谢Piotr!毕竟,问题是我在eclipse中启动了JBoss,它的自动启动配置...它没有传递-Djava.endorsed.dirs = $ JBOSS_HOME/lib/endorsed param.添加它之后(以及从run.bat脚本运行JBoss)它运行正常.再次感谢!(你应该得到的不仅仅是一票我:)) (2认同)

pha*_*lat 23

我从JBoss 4.2.2升级时遇到了同样的问题,并在JBoss 5.1.0发行说明中找到答案 :

JBossAS 5.0.0.GA可以用Java5和Java6编译.Java5编译的二进制文件是我们的主要/推荐二进制分发版.它经过了严格的测试,可以在Java 5和Java 6运行时下运行.在Java 6下运行时,您需要手动将以下库从JBOSS_HOME/client目录复制到JBOSS_HOME/lib/endorsed目录,以便使用JBossWS支持的JAX-WS 2.0 api:

  • 将JBossWS-本机没有saaj.jar
  • 将JBossWS-本机没有jaxrpc.jar
  • 将JBossWS-母语jaxws.jar
  • 将JBossWS-本机JAXWS-ext.jar

我正在使用JBoss 5.1.0 build with Java 5(在JDK 1.6.0_20上运行)的分发,并且确实将这些JAR复制到已签名的目录中解决了这个问题.我们没有使用为Java 6编译的版本,因为注意:

但应该注意的是,JBoss AS 5的Java 6编译版本仍处于试验阶段.


小智 7

这可能是由于SAAJjar的冲突问题.复制JbossSaaj从罐子{Jboss_HOME}/LIB{JBOSS_HOME}/lib/endorsed.我希望这有助于解决问题,

  • 将jboss/server/<config>/lib目录中的jboss-saaj.jar复制到jboss/lib/endorsed在jboss-4.2.3.GA上为我做了诀窍 (4认同)