Client Web Service in JBoss 5.1 con JDK6
-
19-09-2019 - |
Domanda
Questa è una continuazione della domanda qui: JBoss - non applicazione deve essere compilato sotto lo stesso JDK come JBOSS è in esecuzione in?
E 'diverso abbastanza però che ha richiesto una nuova domanda.
Sto cercando di utilizzare JDK6 per eseguire JBOSS 5.1, e ho scaricato la versione JDK6 di JBoss 5.1. Questo funziona bene e la mia applicazione EAR distribuisce bene. Tuttavia, quando ho voglia di correre un client di servizi web con codice come questo:
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());
}
ottengo la seguente eccezione:
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)
Ora, qui è la parte veramente interessante . Se cambio il JDK che il mio codice di cui sopra è in esecuzione in da JDK6 al JDK5, l'eccezione di cui sopra se ne va! E 'davvero strano.
L'unico modo che ho trovato per il codice di cui sopra per l'esecuzione in JDK6 è stato quello di prendere il / lib cartella JBOSS_HOME / approvato e copiarlo JDK6_HOME / lib. Questo sembra che non dovrebbe essere necessario, ma lo è.
C'è un altro modo per fare questo lavoro diverso utilizzando la soluzione che ho appena descritto?
Soluzione
appare meno come se è stato eseguito alla presenza di JAX-WS come una caratteristica ufficiale del JDK 1.6. Non copiare le cose a 'lib', copiarli in una directory 'approvato' (quello elencato nella java.endorsed.dirs). Questo potrebbe essere utile.
Se si dispone di un up-to-date 1.6, è possibile aggirare il problema allo stesso modo che Apache CXF fa. Vedere la documentazione per informazioni su come utilizzare CXF in un ambiente 1.6.
Altri suggerimenti
Ci sono vari suggerimenti e spiegazioni nella rispettiva bug report e altrove (ad esempio qui e qui ). Non so come funzionano.
Informazioni su questo problema si può trovare in Installazione ufficiale JBoss E Guida introduttiva: http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide /5/html/Installation_Alternatives.html