Jetty 9.0.6 を使用して、Jersey Web アプリケーションを Jersey 1.17.1 から 2.3.1 に移行しています。Jersey 1.17.1 では、リソースは起動時にロードされます。ただし、ほぼ同じコード (以下) は、リクエストが入ったときにのみ開始されます。ただし、起動時にロードされることを確認したいと思います (つまり、注釈付きリソース クラスのコンストラクターが呼び出されます)。何が問題なのですか?
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;
}
}