set属性必须由 SOAPMessage 的所有子类覆盖

2022-09-01 06:35:59

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

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

这个类在 JBoss 4.2.3 上运行良好,但是当迁移到 JBoss 5.1.0 时,我得到了这个例外。

java.lang.UnsupportedOperationException: setProperty 必须被 SOAPMessage 的所有子类覆盖

我的配置:

  • Windows XP SP3(但在Vista和Linux上都有相同的功能)
  • 孙 JDK 1.6.0_17
  • JBoss 5.1.0 GA for jdk6

提前致谢!


答案 1

有一些事情可能会出错,所以我会告诉你什么对我的情况有帮助(类似于你,我使用的是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 或 Servlets,则可以将它们添加到类路径中,但只能使用 lib/认可的 JAX-WS JAR。

在JBoss 5.1的情况下,它对我的特殊情况有所帮助,在JBoss的早期版本中,其他一些技巧起作用,例如尝试在启动客户端和JBoss时添加java选项-Dsun.lang.ClassLoader.allowArraySyntax=true或/和-Djava.endorsed.dirs=$JBOSS_HOME/lib/endorsed。


答案 2

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

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

  • jbossws-native-saaj.jar
  • jbossws-native-jaxrpc.jar
  • jbossws-native-jaxws.jar
  • jbossws-native-jaxws-ext.jar

我正在使用带有Java 5(在JDK 1.6.0_20上运行)的JBoss 5.1.0构建发行版,并且确信将这些JAR复制到认可的目录中解决了这个问题。我们没有使用为Java 6编译的版本,因为请注意:

然而,应该注意的是,JBoss AS 5的Java 6编译发行版仍处于实验阶段。


推荐