[英]Setting websocket SSL on grizzly
我正在嘗試使用灰熊容器上的“ javax.websocket.server.ServerEndpoint”通過SSL配置WebSocket。 但是我找不到任何將SSL屬性設置為我的端點的方法。
我的端點代碼:
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(
Value="/ptiWs",
decoders = {ApiMessage.ApiCoder.class},
)
public class WebsocketEndpoint {
private static final Logger LOG = LogManager.getLogger(WebsocketEndpoint.class);
private final ApiVisitorImpl apiVisitor;
public WebsocketEndpoint(){
}
@OnOpen
public void onOpen(Session session){
LOG.info("New connection open : " + session.toString());
}
@OnMessage
public void message(Session session, ApiMessage message){
LOG.info("New message arrive " + message.toString());
}
}
最后,使用以下代碼將端點添加到我的Grizzly實例:
Server ptiWebsocket = new Server("localhost", 8025, "/", null, WebsocketEndpoint.class);
ptiWebsocket.start();
我已經為玻璃魚完成了這項工作,這很容易,但是在這里我找不到任何繼續進行的方法。
和依賴:
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-server</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-container-grizzly-server</artifactId>
<version>1.7</version>
</dependency>
謝謝
查看tyrus源代碼,似乎不支持立即使用。 您需要創建一個新的ServerContainerFactory,就像org.glassfish.tyrus.container.grizzly.server.GrizzlyServerContainer一樣。 從Github中獲取代碼。 您可以創建自己的GrizzlySSLServerContainer。 然后,您將在start方法中將SSL配置添加到NetworkListener。 然后,可以使用JAR將新的GrizzlySSLServerContainer類的全限定名稱添加到META-INF / services / org.glassfish.tyrus.spi.ServerContainerFactory中,而Tyrus應該選擇它。
它有點hacky,必須復制/粘貼代碼很爛,但是應該可以。
1.)將GrizzlyServerContainer復制到新的GrizzlySSLServerContainer類。
2.)將提供SSL配置數據的方法添加到新的Container類中。
3.)將數據添加到NetworkListener以實例化SSL
4.)將新類添加到jar的META-INF / serivces目錄中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.