我目前正在使用带有嵌入式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)将哈希表的一个实例注入所有需要访问/修改它的资源中。

10-04 18:02