防止执行ServletContainerInitializer或如何使用绝对顺序

时间:2015-07-16 15:45:14

标签: java glassfish startup servlet-3.0

是否可以阻止执行提供的jar的ServletContainerInitializer。

我想阻止将Glassfish 4.1提供的JerseyServletContainerInitializer.java作为osgi-bundle(jersey-container-servlet.jar)执行。

或者我如何使用web {的<absolute-order>强制加载ResteasyServletInitializer.java在执行球衣对手之前提供的resteasy-servlet-initializer-3.0.11.Final.jar

我不明白如何使用web.xml实现这一目标。 ServletContainerInitializer状态的规范也是:

  

在任何一种情况下,必须忽略从绝对排序中排除的Web片段JAR文件的ServletContainerInitializer服务,并且发现这些服务的顺序必须遵循应用程序的类加载委派模型。

因此我尝试使用我的glassfish-web.xml但没有效果。

请指导我这个。

干杯

(p.s。从glassfish / modules /文件夹中删除jersey-container-servlet.jar“工作”)

1 个答案:

答案 0 :(得分:0)

Web片段排序无法正常工作,因为jersey-container-servlet.jar不是真正的Web片段。

但是下面的内容适用于使用Jersey 2的Webogic 12.2。

为您的应用创建课程

package my.app;

public class MyJaxRSApplication extends javax.ws.rs.core.Application {}

使用web.xml中此类的完全限定名称注册Rest Easy Easy servlet

<servlet>
    <servlet-name>my.app.MyJaxRSApplication</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>

这不会阻止执行JerseyServletContainerInitializer,但它不会注册Jersey servlet。