2010-03-13 7 views
2

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?

Répondre

3

On dirait que vous avez rencontré JAX-WS en tant que fonctionnalité officielle de JDK 1.6. Ne copiez pas les éléments dans 'lib', copiez-les dans un répertoire 'endorsed' (listé dans java.endorsed.dirs). This peut être utile.

Si vous avez un 1.6 à jour, vous pouvez le contourner de la même manière que le Apache CXF. Consultez la documentation pour plus d'informations sur l'utilisation de CXF dans un environnement 1.6.

+0

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

+0

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

2

Il existe diverses suggestions et explications dans les codes bug report respectifs et ailleurs (par exemple, here et here). Je ne sais pas comment ils fonctionnent.

Questions connexes