是否可以覆盖Jersey的ServletContainer init方法?

时间:2015-10-26 14:30:37

标签: java maven jersey initialization servlet-container

用Java编写Web服务(Jersey / Maven)。我想在部署应用程序之前构建一个构建许多数据库的类 - 因为它的所有资源都依赖于这些数据库。虽然有泽西的ServletContainer源代码的文本表示,但它已被编译成字节码并打包到jar中,因此无法编辑。解决方案就像在我的代码中声明ServletContainer类的实例并覆盖那里的init方法一样简单吗?

1 个答案:

答案 0 :(得分:1)

您可以在ResourceConfig中完成所有初始化操作。

package org.foo;

public class AppConfig extends ResourceConfig {
    public AppConfig() {
        // initialize here
        packages("the.packages.to.scan");
    }
}

您可以在web.xml中声明它

<web-app>
    <servlet>
        <servlet-name>MyApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>org.foo.AppConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyApplication</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

有关其他部署选项,请参阅Servlet-based Deployment