2009-09-17 4 views
12

私はJerseyを使用して開発したRESTサービスを実行するサーバをGrizzlyで作成しようとしています。私は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); 

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

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

アイデア?私は私があなたのために何かを持っているかもしれないと思う

+0

アメージング、私は正確に同じ質問をしてちょうど約ました。何かを学ぶなら教えてください。私も同じことをやります。 – ra9r

答えて

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); 

...私のためにその作業、私はそれは同様にあなたを助け願っています。

+1

ありがとうございます!これは私が必要とするものです。 – Andy

+0

HttpServletRequestなどの@Contextを介してリソースオブジェクトに注入できるように、このスキームにサーブレットコンテキストを追加するにはどうすればよいですか? – ae6rt

1

は、あなたは試してみました:

((ServletAdapter) threadSelector.getAdapter()).addFilter() 
関連する問題