0

現在、Jersey と Jetty が組み込まれた単純な 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現在、リソース クラスで をstatic として定義していますConcurrentHashMapが、これまでのところ問題なく動作しています。

public class MyResource {

private static final Map<String, MyObjects> myRepository = new ConcurrentHashMap<String, MyObjects>();

@GET
...

@PUT
...

}

ただし、HashMap潜在的な他のリソースやサーブレットにアクセスできるようにする予定です。
したがって、より広い範囲のアプリケーション コンテキストに追加する必要があります。
よくわかりませんが、これをどのように行うのが最善でしょうか?
理想的にはプログラム的に。
(jetty.webapp に WebAppContext があることを確認しましたが、これが正しい方法かどうかはわかりません)。

4

1 に答える 1

1

アプリケーション (Spring、Guice) でいくつかの依存性注入を使用して、アクセス/変更が必要なすべてのリソースにハッシュマップの 1 つのインスタンスを注入します。

于 2012-09-21T12:55:43.727 に答える