Программное развертывание сервлета с помощью Jetty

У меня есть сервлет, который я хочу программно развернуть с помощью Jetty. Сервлет использует Spring, и его файл web.xml указывает на XML-файл контекста Spring, как и следовало ожидать.

В данный момент я просто пробую пример кода из документации Jetty, но с моим собственным сервлетом:

Server server = new Server(8080);

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);

context.addServlet(new ServletHolder(new BatchReceiver()),"/br/*");

server.start();
server.join();

Это приводит к следующему исключению:

2012-05-24 14:43:20.190:INFO:oejs.Server:jetty-8.1.3.v20120416
2012-05-24 14:43:20.266:WARN:/:unavailable
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
at org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:84)
at com.spiffymap.sealog.server.servlet.BatchReceiver.init(BatchReceiver.java:126)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:492)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:312)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:778)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:258)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
at org.eclipse.jetty.server.Server.doStart(Server.java:262)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at com.spiffymap.sealog.server.servlet.TestBatchReceiver.main(TestBatchReceiver.java:26)
2012-05-24 14:43:20.335:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

Как я могу настроить свой сервлет, чтобы Jetty знал, где это web.xml и контекст Spring?

Будем признательны за любую помощь!

РЕДАКТИРОВАТЬ

Итак, очевидно, мне не нужен файл web.xml, но мне нужноуказать Jetty на мой контекст Spring. Я пробовал что-то вроде следующего:

context.setInitParameter("contextConfigLocation", "classpath*:**/*Context.xml");

Но это не работает (по-прежнему выдает такое же исключение). Я также безрезультатно пытался установить «contextConfigLocation» в ServletHolder.

11
задан DeadPassive 28 March 2018 в 10:04
поделиться