Может ли метод инициализации ServletContainer на Джерси быть переопределен?

Написание веб-службы на Java (Джерси / Мавен). Я хотел бы создать класс, который создает несколько баз данных перед развертыванием приложения, поскольку все его ресурсы зависят от этих баз данных. Хотя есть текстовое представление о Джерси ServletContainer Исходный код, он уже скомпилирован в байт-код и упакован в JAR-файл и, следовательно, не может быть отредактирован. Является ли решение столь же простым, как объявление экземпляра ServletContainer класс в моем коде и переопределение метода инициализации там?

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>

Другие варианты развертывания см. В разделе Развертывание на основе сервлетов.

Другие вопросы по тегам