簡體   English   中英

Tomcat 7和8的Websocket

[英]Websockets for Tomcat 7 AND 8

在版本7和版本8之間更改了在Tomcat中實現WebSocket的方式。

Tomcat 7:

public class ChatWebSocketServlet extends WebSocketServlet { ... }

Tomcat 8:

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

我想知道的是,是否有可能將兩個版本都構建到單個應用程序中。 我已經試過了

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

但它從來沒有編譯對陣雙方的WebSocket-api.jar文件和catalina.jar。 我想可以檢查是否定義了一個類並在運行時使用一個或另一個,但是我不確定如何確切地實現它,甚至不確定這是一個好主意。

我可以將websocket-api.jar打包到最終產品中,但是將其部署到Tomcat 7時會引起問題嗎?

Tomcat 7 Tomcat 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版本。 但是,由於存在一些錯誤修正,包括與安全性相關的修正,您應該有輕松的時間僅支持最新版本的Tomcat7。不必擔心那些多年來未更新其服務器軟件的錯誤修正。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM