2014-06-19 24 views
9

La mia webapp contiene una libreria che contiene una classe annotata con @javax.ws.rs.ext.Provider. Se questa classe è presente, il mio webapp (schierato come WAR all'interno di un EAR) non si avvia con il seguente errore:Weblogic: disabilita scansione jersey

<19-Jun-2014 14:41:50 o'clock BST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "1403185262187" for task "2". Error is: "weblogic.application.ModuleException: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes." 
weblogic.application.ModuleException: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. 
     at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140) 
     at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:213) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) 
     Truncated. see log file for complete stacktrace 
Caused By: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. 
     at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1331) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770) 
     Truncated. see log file for complete stacktrace 

non sto usando jersey a tutti, non sto usando qualsiasi JAX-RS servizi, e il mio web.xml non contiene servlet relativi alla jersey. Non capisco perché weblogic inizializza la jersey e analizza i barattoli nella mia applicazione per cose correlate a jaxrs.

La maggior parte delle informazioni che posso trovare su Internet relative a questo si traduce in persone che configurano il loro servlet jersey in modo diverso. Ma non ne ho uno da configurare ...

Io non controllo la libreria incriminata, quindi rimuovere la classe non è un'opzione.

Quindi, come posso dire a weblogic di non analizzare le mie classi quando inizializza la maglia?

Si noti che ciò è accaduto dopo aver cambiato il mio web.xml in servlet 3.0 anziché in 2.4. Se lo cambio a 2.4, tutto va bene.

Sto usando weblogic 12.1.2.0 (12c).

Aggiornamento: risulta che la scansione JAX-RS è una caratteristica chiave di Javaee 6: l'idea è di inserire le classi annotate nella webapp e non è necessario eseguire alcuna configurazione per visualizzarle come REST webservice.

+1

Voglio solo chiedere se è stata trovata o meno una soluzione pertinente al problema. Puoi suggerire un lavoro perché sto affrontando lo stesso problema. :( Possiamo dire a Weblogic di non cercare i barattoli di Jersey mentre si usa la versione servlet a 3.0 nel web.xml ?? – JavaBeigner

+0

Qualsiasi aggiornamento sul mio problema? – JavaBeigner

risposta

-1

This page documenta i nomi dei file JAR e WAR utilizzati da WebLogic per il caricamento di Jersey. Puoi rinominare o rimuovere quei file e solo impedire a WebLogic di caricarli a titolo definitivo.

Non è chiaro a me se WebLogic utilizza effettivamente quei file JAR. Da tutto ciò che ho letto, WebLogic fornisce i JAR nelle librerie distribuibili come librerie condivise predefinite da utilizzare nelle applicazioni Web e non direttamente da WebLogic Server.

+0

La mia webapp è qualcosa che do ai clienti, quindi mi chiederei loro per rimuovere i jar dalle loro istanze weblogic, che penso sarebbero piuttosto riluttanti a fare. E se ho intenzione di andare a questo livello di hacker allora sarebbe probabilmente più facile rimuovere questo file dal jar come parte di la build (anche se questo è quello che sto cercando di evitare). – stripybadger

+0

weblogic 12c si comporta in modo molto diverso da 11g (10.3.6) –

0

Ho un indizio per disabilitare la scansione jersey impostando una proprietà jersey.config.disableAutoDiscovery, ma non funziona ancora per me. Vedi Configuring the Classpath Scanning per maggiori dettagli.

Problemi correlati