2009-09-17 14 views
12

Jersey kullanarak geliştirdiğim bir REST hizmetini çalıştırmak için bir sunucu oluşturmak için Grizzly'i kullanmaya çalışıyorum. Grizzly sunucusunu kullanarak, önerdiğim tüm örnekler gibi:Bir Jersey REST hizmeti çalıştıran Grizzly sunucusuyla filtreleri kullanma

. Bu iyi, sunucu başlıyor ve gelen istekleri kaynak sınıflarıma iletebiliyor. Ancak, hizmet uygulaması bir sunucu filtresi kullanmasını gerektirir. Grizzly, ServletAdapter sınıfı aracılığıyla filtrelerin tanımını ve diğer benzer servletle ilgili yapılandırma seçeneklerini desteklemektedir. Benim sorunum, Jersey entegrasyonu sağlayan bir com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory kullanırken bir filtrenin nasıl tanımlanacağı konusunda çalışamam.

Herhangi bir fikrin var mı?

+0

Şaşırtıcı, ben de aynı soruyu sormak üzereydim. Bir şey öğrenirsen haberim olsun. Aynısını yapacağım. – ra9r

cevap

8

ben ... sana bir şey olabileceğini düşünüyorum

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

... benim için çalışma, ben de size yardımcı olur umarım.

+1

Teşekkürler! Bu tam ihtiyacım olan şey. – Andy

+0

Bu şemaya, kaynak nesnelerinize HttpServletRequest gibi @Context nesneleri aracılığıyla enjekte edebileceğiniz bir sunucu bağlamı nasıl eklersiniz? – ae6rt

1

denedin:

((ServletAdapter) threadSelector.getAdapter()).addFilter()