Jetty 9.0.6을 사용하여 Jersey 1.17.1에서 2.3.1로 내 Jersey 웹 응용 프로그램을 마이그레이션하려고합니다. Jersey 1.17.1에서는 시작 중에 자원이로드됩니다. 그러나 거의 동일한 코드 (아래)는 요청이 들어올 때만 시작됩니다.하지만 시작시로드되었는지 확인하고 싶습니다. 즉 주석이 달린 리소스 클래스의 생성자가 호출됩니다. 어떤 생각이 잘못된거야?Jetty가 내장 된 Jersey 2.3을 사용하여 시작시 서블릿을로드하는 방법
public static void startServer(){
org.eclipse.jetty.server.Server server = new Server();
org.eclipse.jetty.servlet.ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
org.glassfish.jersey.servlet.ServletContainer servletContainer = new ServletContainer();
org.eclipse.jetty.servlet.ServletHolder servletHolder = new ServletHolder(servletContainer);
servletHolder.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "mypackage");
servletHolder.setInitOrder(0); // this does not seem to work
context.addServlet(servletHolder, "/*");
server.start();
}
그리고 약 :
package mypackage;
@Singleton
@Path("/foo")
public class MyResource {
public MyResource(){
// I want this to be called when I start the server
}
@Path("bar")
public Response receivePayload(@Context HttpServletRequest request, String payloadString){
// do some stuff
return response;
}
}
고마워요, 1 월. 1.17과 2.3 사이의 행동이 변경되었을 가능성이 있습니다. 내가 한 일은 생성자에서 다른 곳으로 코드를 옮기는 것이므로 게으른 초기화로 문제가되지 않습니다. – Uli