这是这里问题的延续:
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。似乎没有必要,但确实如此。

除了使用我刚刚描述的解决方法之外,还有其他方法可以使这项工作吗?

最佳答案

看起来好像您遇到了JDK 1.6的正式功能JAX-WS一样。不要将内容复制到“ lib”,而是将它们复制到“认可”目录(java.endorsed.dirs中列出的目录)。 This可能会有所帮助。

如果您拥有最新的1.6,则可以像Apache CXF一样解决此问题。请参阅文档以获取有关如何在1.6环境中使用CXF的信息。

10-06 06:09