2011-10-10 42 views
0

我正在開發Jax-RS RESTful Web服務。雖然我還在編寫代碼(在Eclipse中),但我希望能夠輕鬆進行調試,所以我決定擁有一個Maven項目,並使用Grizzly Web服務器的依賴關係,允許我僅使用2代碼行(甚至不需要構建WAR文件)。在Grizzly中注入ServetContext爲null,在TomCat 7中不爲null

在我的Web服務實現類(具有@Path)我已經注​​入了上下文成員變量:

@javax.ws.rs.core.Context 
ServletContext context; 

當我檢查空上下文變量,它不會,如果我是空構建WAR文件並將其部署到TomCat中,但當我啓動我的Grizzly服務器並檢查它時,它將爲空。啓動灰熊V1.9服務器做如下:

String url = "http://localhost:1234"; 
SelectorThread srv = GrizzlyServerFactory.create(url); 

我試圖找到與谷歌這一解決方案,有人建議在web.xml中啓用「時加載的啓動」,但這也沒有幫助。

任何想法? 乾杯!

回答

0

雖然這裏的其他答案有一定意義,但我並不太確定,因爲根據maven依賴關係樹,servlet包也包含在內。

我可以通過遷移到不同的Maven依賴關係來解決這個問題。我現在使用

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-grizzly2</artifactId> 
    <version>1.9.1</version> 
</dependency> 

並按照http://blogs.oracle.com/PavelBucek/entry/jersey_grizzly_2_x_integration(樣本)的說明使其工作。 servlet上下文現在已成功注入。

1

我的猜測是你使用了沒有Servlet容器擴展的Grizzly。理論上講,JAX-RS不僅可以在servlet環境中運行,但是不能得到ServletContext或HttpServletRequest或Response。

相關問題