Jetty JerseyServlet встроенная инициализация - PullRequest
0 голосов
/ 10 июля 2020

Я мало что знаю о Jetty. Я унаследовал код, который использует переменные stati c для передачи данных в сервлет Jersey, и хочу избавиться от статики. Мой код похож на этот пример, где имя класса EntryPoint используется для инициализации сервлета:

  public class App {
    public static void main(String[] args) throws Exception {
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");

        Server jettyServer = new Server(8080);
        jettyServer.setHandler(context);

        ServletHolder jerseyServlet = context.addServlet(
             org.glassfish.jersey.servlet.ServletContainer.class, "/*");
        jerseyServlet.setInitOrder(0);

        // Tells the Jersey Servlet which REST service/class to load.
        jerseyServlet.setInitParameter(
           "jersey.config.server.provider.classnames",
           EntryPoint.class.getCanonicalName());

        try {
            jettyServer.start();
            jettyServer.join();
        } finally {
            jettyServer.destroy();
        }
    }
}

В примерах в Интернете EntryPoint очень прост, и я предполагаю, что Jetty создает EntryPoint путем отражения с использованием конструктора по умолчанию. Что мне делать, если EntryPoint более сложный и требует инициализации? Либо его конструктор принимает аргументы, либо необходимо установить свойства?

Могу ли я предоставить Jetty экземпляр объекта или фабричный объект? Я искал способы поддержать это и ничего не нашел.

Спасибо

...