Weblogic:禁用平针扫描

时间:2014-06-19 14:07:30

标签: jersey weblogic jax-rs weblogic12c

我的webapp包含一个库,其中包含一个用@javax.ws.rs.ext.Provider注释的类。如果存在此类,则我的webapp(在EAR中部署为WAR)无法启动,并出现以下错误:

<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

我根本不使用运动衫,我没有使用任何jax-rs服务,而且我的web.xml不包含与球衣相关的servlet。我不明白为什么weblogic在我的应用程序中初始化jersey并扫描jars相关的东西。

我可以在互联网上找到的与此相关的大部分信息都会导致人们以不同的方式配置他们的球衣servlet。但我没有配置......

我不控制有问题的库,因此删除该类不是一种选择。

那么,我怎么能告诉weblogic在初始化球衣时不要扫描我的课程呢?

请注意,这是在将我的web.xml更改为servlet 3.0而不是2.4之后发生的。如果我把它改回2.4,一切都很好。

我正在使用weblogic 12.1.2.0(12c)。

更新:事实证明JAX-RS扫描是Javaee 6的一个关键特性 - 整个想法是你将注释的类放在你的webapp中,你不需要做任何配置就可以将它们公开为REST web服务。

2 个答案:

答案 0 :(得分:0)

我有一个线索可以通过设置属性jersey.config.disableAutoDiscovery来禁用 jersey 扫描,但它对我来说还不行。有关详细信息,请参阅Configuring the Classpath Scanning

答案 1 :(得分:-1)

This page记录了WebLogic用于加载Jersey的JAR和WAR文件的名称。您可以重命名或删除这些文件,并阻止WebLogic直接加载它们。

我不清楚WebLogic是否实际使用这些JAR文件。从我读过的所有内容中,WebLogic将可部署库中的JAR作为预构建的共享库提供,以便在Web应用程序中使用,而不是直接由WebLogic Server使用。