我目前正在使用带有嵌入式Jetty的Jersey构建一个简单的REST接口。
Server server = new Server(8080);
ContextHandlerCollection contexts = new ContextHandlerCollection();
ServletContextHandler servletContextHandler = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
ServletHolder sh = new ServletHolder(ServletContainer.class);
servletContextHandler.addServlet(sh, "/*");
server.setHandler(servletContextHandler);
sh.setInitParameter("com.sun.jersey.config.property.packages", "my.package.containing.jersey.resource");
在我的资源中,我定义了
@GET, @PUT, @DELETE
方法,所有方法都从哈希图中获取/放置/删除对象。当前,我在资源类中将
HashMap
定义为静态ConcurrentHashMap
,到目前为止,它仍然可以正常工作。public class MyResource {
private static final Map<String, MyObjects> myRepository = new ConcurrentHashMap<String, MyObjects>();
@GET
...
@PUT
...
}
但是,我计划使
HashMap
可访问其他潜在的资源和servlet。因此要在一些更广泛的应用环境中添加它。但是不确定,如何才能最好地做到这一点?理想地以编程方式。 (我已经看到jetty.webapp中有一个WebAppContext,但是不确定这是否可行)。 最佳答案
在应用程序中使用一些依赖项注入(Spring,Guice)将哈希表的一个实例注入所有需要访问/修改它的资源中。