这是问题在这里的延续: JBoss - does app have to be compiled under same jdk as JBOSS is running under?Web服务客户端在JBOSS 5.1 JDK6
不过,它需要一个新的问题,这是很不同的。
我正在尝试使用jdk6来运行JBOSS 5.1,并且我下载了JDK6版本的JBOSS 5.1。这工作正常,我的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。这似乎不应该是必要的,但它是。
除了使用我刚描述的解决方法外,是否有其他方法可以使此工作成为可能?
不知道我理解。我将JBOSS_HOME/lib/endorsed文件夹复制到JDK6_HOME/lib,所以我最终选择了JDK6_HOME/lib/endorsed。你的意思是别的吗? – dcp 2010-03-13 14:01:18
据我所知,JBoss不使用JDK/lib/endorsed文件夹。您需要将所有webapps所需的所有jar放入JBOSS/lib/endorsed文件夹。 – Stroboskop 2011-11-14 16:50:04