这是此处问题的延续: JBoss - 应用程序是否必须在与 JBOSS 运行时相同的 jdk 下编译?
尽管它需要一个新问题,但它已经足够不同了。
我正在尝试使用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。这似乎不应该是必要的,但它是。
除了使用我刚才描述的解决方法之外,还有其他方法可以完成这项工作吗?