12

Grizzlyを使用して、Jerseyを使用して開発したRESTサービスを実行するサーバーを作成しようとしています。私は以下を使用してGrizzlyサーバーを作成しています:

final String baseUri = "http://localhost:9998/";
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "me.my.rest.package");
SelectorThread threadSelector = 
  GrizzlyWebContainerFactory.create(baseUri, initParams);

私が見つけたすべての例が示唆しているようです。これは問題ありません。サーバーが起動し、着信要求をリソースクラスに転送できます。

ただし、サービスの実装では、サーブレットフィルタを使用する必要があります。ServletAdapterGrizzlyは、クラスを介して、フィルターおよびその他の同様のサーブレット関連の構成オプションの定義をサポートしているようです。私の問題は、com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactoryJersey統合を提供するを使用するときにフィルターを定義する方法を理解できないことです。

何か案は?

4

2 に答える 2

8

私はあなたのために何かを持っているかもしれないと思います...

GrizzlyWebServer ws = new GrizzlyWebServer(9999);
ServletAdapter jerseyServletAdapter = new ServletAdapter();
jerseyServletAdapter.setServletInstance(new ServletContainer());
jerseyServletAdapter.addInitParameter(
    "com.sun.jersey.config.property.packages", "me.my.rest.package");
jerseyServletAdapter.setServletPath("/api");

// HERE IS HOW YOU ADD A FILTER 
jerseyServletAdapter.addFilter(new MyFilter(), "HibernateSessionFilter", null);

ws.addGrizzlyAdapter(jerseyServletAdapter, null);

...それは私のために働いています、私はそれがあなたにも役立つことを願っています。

于 2009-09-24T08:24:37.693 に答える
1

やってみました:

((ServletAdapter) threadSelector.getAdapter()).addFilter()
于 2010-11-17T15:26:57.263 に答える