Ceci est la suite de la question ici: JBoss - does app have to be compiled under same jdk as JBOSS is running under?Service Client Web dans JBOSS 5.1 avec JDK6
Il est assez différent mais qu'il fallait une nouvelle question. J'essaie d'utiliser jdk6 pour exécuter JBOSS 5.1 et j'ai téléchargé la version JDK6 de JBOSS 5.1. Cela fonctionne très bien et mon application EAR se déploie correctement. Cependant, quand je veux exécuter un client de service Web avec le code comme ceci:
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());
}
je reçois l'exception suivante:
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)
Maintenant, est ici la partie vraiment intéressante. Si je change le JDK que le code ci-dessus exécute de JDK6 à JDK5, l'exception ci-dessus disparaît! C'est vraiment étrange. La seule manière que j'ai trouvée pour que le code ci-dessus s'exécute sous JDK6 était de prendre le dossier JBOSS_HOME/lib/endorsed et de le copier dans JDK6_HOME/lib. Cela semble ne pas être nécessaire, mais c'est le cas.
Existe-t-il un autre moyen de faire ce travail autre que l'utilisation de la solution de contournement que je viens de décrire?
Je ne sais pas, je comprends. J'ai pris le dossier JBOSS_HOME/lib/endorsed et l'ai copié dans JDK6_HOME/lib, donc j'ai fini avec JDK6_HOME/lib/endorsed. Vouliez-vous dire quelque chose d'autre? – dcp
Pour autant que je sache, JBoss n'utilise pas le dossier JDK/lib/endorsed. Vous devez placer tous les fichiers jars requis par toutes les applications Web dans le dossier JBOSS/lib/endorsed. – Stroboskop