2014-06-19 12 views
9

Meine Webanwendung enthält eine Bibliothek, die eine Klasse enthält, die mit @javax.ws.rs.ext.Provider gekennzeichnet ist. Wenn diese Klasse vorhanden ist, meine Webapp (als IST innerhalb einer EAR-Einsatz) schlägt mit dem folgenden Fehler zu starten:Weblogic: Jersey-Scannen deaktivieren

<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 

Ich bin nicht Trikot mit überhaupt, ich bin kein JAX-RS-Verwendung Dienste, und meine web.xml enthält keine Jersey-Servlets. Ich verstehe nicht, warum Weblogic Trikots initialisiert und Gläser in meiner Bewerbung für Jaxrs-ähnliche Sachen scannt.

Die meisten Informationen, die ich im Internet dazu finden kann, führen dazu, dass Leute ihr Trikot-Servlet anders konfigurieren. Aber ich habe keine zu konfigurieren ...

Ich kontrolliere nicht die beleidigende Bibliothek, so dass das Entfernen der Klasse keine Option ist.

Also, wie kann ich weblogic sagen, meine Klassen nicht zu scannen, wenn es Jersey initialisiert?

Beachten Sie, dass dies passiert, nachdem ich meine web.xml zu Servlet 3.0 statt 2.4 geändert habe. Wenn ich es zurück in 2.4 ändere, ist alles in Ordnung.

Ich benutze Weblogic 12.1.2.0 (12c).

Update: stellt sich heraus, dass JAX-RS Scannen ist eine Schlüsselfunktion von Javaee 6 - die ganze Idee ist, dass Sie Ihre annotierten Klassen in Ihrer Webanwendung und Sie müssen keine Konfiguration vornehmen, um sie als ausgesetzt zu haben REST Webservice.

+1

Ich möchte nur fragen, ob eine relevante Lösung für das Problem gefunden wurde oder nicht. Können Sie eine Arbeit vorschlagen, weil ich mit demselben Problem konfrontiert bin? :( Können wir Weblogic sagen, nicht nach Jersey-Gläsern zu suchen, während Servlet Version zu 3.0 in web.xml verwendet? – JavaBeigner

+0

Irgendwelche Aktualisierung über mein Problem? – JavaBeigner

Antwort

-1

This page dokumentiert die Namen der JAR- und WAR-Dateien, die WebLogic zum Laden von Jersey verwendet. Sie können diese Dateien umbenennen oder entfernen und verhindern, dass WebLogic sie direkt lädt.

Es war mir unklar, ob WebLogic tatsächlich diese JAR-Dateien verwendet. Nach allem, was ich gelesen habe, stellt WebLogic JARs in den Deployable-Libraries als vorgefertigte Shared Libraries zur Verwendung in Webanwendungen und nicht zur direkten Verwendung durch WebLogic Server bereit.

+0

Meine Webapp ist etwas, das ich Kunden aushändigen, also würde ich fragen Sie entfernen Jars aus ihren Weblogic-Instanzen, von denen ich denke, dass sie das ziemlich zögerlich tun würden. Und wenn ich zu dieser Hacker-Ebene gehe, wäre es wahrscheinlich einfacher, diese Datei aus dem Jar zu entfernen der Build (obwohl das ist was ich versuche zu vermeiden). – stripybadger

+0

weblogic 12c verhält sich sehr anders als 11g (10.3.6) –

0

Ich habe einen Hinweis, um die Trikot Scannen durch Festlegen einer Eigenschaft jersey.config.disableAutoDiscovery zu deaktivieren, aber es funktioniert nicht für mich noch. Weitere Informationen finden Sie unter Configuring the Classpath Scanning.