这是这里问题的延续: JBoss - does app have to be compiled under same jdk as JBOSS is running under?
尽管它需要一个新问题,但它已经不同了。
我正在尝试使用jdk6来运行JBOSS 5.1,并且我下载了JBOSS 5.1的JDK6版本。这工作正常,我的EAR应用程序部署良好。但是,当我想使用以下代码运行Web服务客户端时:
public static void main(String[] args) throws Exception {
System.out.println("creating the web service client...");
TestClient client = new TestClient("http://localhost:8080/tc_test_project-tc_test_project/TestBean?wsdl");
Test service = client.getTestPort();
System.out.println("calling service.retrieveAll() using the service client");
List<TestEntity> list = service.retrieveAll();
System.out.println("the number of elements in list retrieved using the client is " + list.size());
}
我得到以下异常:
javax.xml.ws.WebServiceException: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:396)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:170)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150)
现在,这是非常有趣的部分。如果我将上面代码运行的JDK从JDK6更改为JDK5,则上面的异常就会消失!真的很奇怪。
我发现上面代码在JDK6下运行的唯一方法是获取JBOSS_HOME / lib / endorsed文件夹并将其复制到JDK6_HOME / lib。这似乎不应该是必要的,但确实如此。
除了使用我刚才描述的解决方法之外,还有其他方法可以完成这项工作吗?
答案 0 :(得分:3)
看起来好像你遇到了JAX-WS作为JDK 1.6的官方功能。不要将内容复制到'lib',将它们复制到'endorsed'目录(java.endorsed.dirs中列出的目录)。 This可能会有所帮助。
如果你有最新的1.6,你可以像Apache CXF那样解决这个问题。有关如何在1.6环境中使用CXF的信息,请参阅文档。
答案 1 :(得分:2)
各个bug report和其他地方(例如here和here)有各种建议和解释。我不知道他们的工作情况如何。
答案 2 :(得分:0)
您可以在JBoss官方安装和入门指南中找到有关此问题的信息: http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide/5/html/Installation_Alternatives.html