2017-08-15 62 views
0

實現在Tomcat中的WebSockets的方式版本7和版本8的WebSockets和8

的Tomcat 7之間改變

@ServerEndpoint(value = "/chat") 
public class ChatAnnotation { ... } 

我想知道是否可以將兩個版本構建到一個應用程序中。我已經嘗試過

@ServerEndpoint(value = "/chat") 
public class ChatServlet extends WebSocketServlet { ... } 

但它從來沒有對編譯既的WebSocket-api.jar文件和catalina.jar。我想有可能檢查一個類是否被定義並在運行時使用其中一個,但我不確定如何實現它,甚至不知道它是否是一個好主意。

我可以將websocket-api.jar打包到最終產品中,但會導致將其部署到Tomcat 7時出現問題?

回答

1

Tomcat 7Tomcat 8文檔

應用開發

的Tomcat實現由JSR-356定義的Java的WebSocket 1.1 API。

從Tomcat 7文檔:

棄用專有API

之前JRS-356的發展,提供Tomcat的專有的WebSocket API。此API已在Tomcat 7中棄用,並將在Tomcat 8中刪除 。除了錯誤修復之外,此專有API不太可能有任何進一步的開發 。

有關此API的信息,請參閱org.apache.catalina.websocket包的Javadoc。 Javadoc頁面不是包含在Tomcat二進制發行版中的 。要在本地查看它們, 必須下載並安裝「完整文檔」發行版, 或從源代碼構建。您也可以在Apache Tomcat 網站上閱讀此內容。從WebSocketServlet開始。

我懷疑你可以同時使用這兩個實現,但根據文檔你應該沒有在兩個版本上運行的JSR-356特定實現有問題。只是遠離專有實施。

由於Tomcat 7的第一個版本是在2010/2011發佈的,但JSR-356在2013年首次發佈,有一些古老的版本沒有標準的websocket實現,所以我會留給你瞭解哪個版本首先包含了JSR-356實現。但是,由於包括安全相關問題在內的錯誤修正,您應該很容易只支持最新版本的Tomcat 7.不要擔心那些未更新其服務器軟件數年的用戶。

+0

這是對的。關鍵的是,我正在使用的演示Tomcat 7系統是7.0。39,這讓我得出結論,你不能在Tomcat 7中使用註釋。但是你可以,並且我同意請求最新版本的版本並不是太多。 –