2012-07-31 10 views
6

Ho un programma batch autonomo che gira su jdk1.6.0_31. Questo programma standalone ha client JAX-WS e client EJB. Il client JAX-WS funzionava perfettamente senza aggiungere alcun jars fino a quando ho aggiunto wlfullclient.jar per il client EJB. Ora con wlfullclient.jar in classpath sto ottenendo l'eccezione qui sotto. Per favore fatemi sapere come risolvere questo. Apprezzo il tuo aiuto.Il client JAX-WS Dispatch funzionava correttamente finché non è stato aggiunto wlfullclient.jar

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/ws /spi/ProviderImpl 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at javax.xml.ws.spi.FactoryFinder.safeLoadClass(FactoryFinder.java:150) 
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:30) 
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:90) 
at javax.xml.ws.spi.Provider.provider(Provider.java:83) 
at javax.xml.ws.Service.<init>(Service.java:56) 
at javax.xml.ws.Service.create(Service.java:691) 

risposta

1

Avete avuto fortuna con questo? Sto incontrando esattamente lo stesso problema in esecuzione su JetSpeed ​​2.2.2 (portal server basato su tomcat). Prima di includere wlfullclient.jar nella cartella lib del server, il mio servizio Web funziona correttamente. Dopo l'inclusione, esplode nell'istanza con esattamente la traccia dello stack che includi sopra.

Il mio pensiero (teorico in questa fase) è la seguente:

wlfullclient.jar ha una classe che ha lo stesso nome e il pacchetto come una classe già in Metro servizi web stack. Questa classe viene caricata prima della classe Metro e quindi indirizzando il caricamento in classe in un percorso di caricamento delle implementazioni della logica Web anziché delle implementazioni della metropolitana. Le implementazioni della logica web non esistono (non è come se fossimo andati allo sforzo di includerle come vogliamo usare standard java) e questo spiega NoClassDefFound.

Vale la pena notare che non ho trovato questa presunta classe con lo stesso nome e pacchetto sia in Metro che in wlfullclient.jar. In questo senso la classe è simile al bosone di Higgs al momento. Quindi presumendo che esista, che cosa fare al riguardo?

Sarei curioso di sapere se hai trovato una soluzione.

Inoltre vorrei aggiungere:

ho bisogno di includere wlfullclient.jar come viene utilizzato da altri portlet in esecuzione sullo stesso server. Non posso rimuoverlo ma non lo uso da solo.

+0

Si prega di fornire una risposta se ne avete trovato uno. Grazie. – MeIr

+0

Allo stesso modo :) Ancora nessuna soluzione. Ho lavorato su altri progetti ma riprenderò sicuramente a cercare di risolvere questo problema quando tornerò in quello spazio. –

2

abbiamo avuto lo stesso problema, dopo la ricerca e trovare questa domanda, ho seguito un sospetto e guardai nella documentazione per il server WebLogic.

Stavo cercando clienti alternativi.

Ci sono fondamentalmente tre vasetti di client:

  • wlclient.jar - per i clienti IIOP
  • wlfullclient.jar - per tutto in un vasetto (enormi dimensioni ~ 50 MB)
  • wlthint3client.jar - per un client t3 molto sottile

L'ultima opzione è una versione ridotta del client che supporta il protocollo proprietario T3 di Weblogics. Ha qualche svantaggio in termini di funzionalità, ma se tutto ciò che devi fare è parlare con un ejb sul server: è tutto lì.

Dopo aver cambiato il modulo wlfullclient.jar in wlthint3client.jar, tutti gli NoClassDefFoundError non sono più disponibili.

Qui un collegamento allo Weblogic Documentation.

+0

Sì, la sostituzione di wlfullclient con wlthint3client.jar risolverebbe il problema – Doss