2012-05-08 68 views
2

我是新來的依賴注入瓦特/春天,我面臨一個看似具有挑戰性的場景。春季澤西+碼頭挑戰

我的應用程序通過一個普通的舊套接字接收來自傳統系統的數據,對數據做有趣事物(tm),然後使用嵌入式Jetty實例通過HTML5 Web套接字抽出真正有意思的結果(tm)。另外,Jetty服務器託管一個Jersey servlet,爲所有有趣的東西(tm)提供RESTful接口。

我想使用Spring將共享DAO和應用程序服務對象注入遺留端和我的Jersey資源。這要求在舊版組件和Jersey之間共享ApplicationContext。看起來我需要創建應用程序上下文,將它連接到我的遺留組件,然後在配置嵌入式Jetty服務器(我正在以編程方式執行)時將應用程序上下文傳遞給Jersey ServletContext。

不幸的是,我不知道如何將現有的應用程序上下文傳遞給Jersey ServletContext。可以做到嗎?有更好的方法嗎?

我想說明的是,這與我在SO上發現的其他Jersey + Jetty + Spring問題不同,它不需要在Jersey之外共享應用程序上下文。

回答

1

我假設你的代碼開始碼頭是一樣的東西:

Server server = new Server(...); 
server.setHandler(new WebAppContext(...)); 

你可以從WebAppContextServletContext並設置SpringContext它:

WebAppContext wac = new WebAppContext(...); 
ServletContext sc = wac.getServletContext(); 
sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, springContext); 
+0

感謝,我給它一個射擊! – HolySamosa