正在灰熊上设置websocket SSL



我正试图在一个灰色容器上使用"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.lassfish.tyrus.container.grizzly.server.GrizzlyServerContainer一样。从Github中获取代码。您可以制作自己的GrizzlySLServerContainer。然后,您将在start方法中将SSL配置添加到NetworkListener中。然后,您可以将新GrizzlySLServerContainer类的完整限定名添加到带有JAR的META-INF/services/org.grasfish.tyrus.spi.ServerContainerFactory中,tyrus应该会选择它。

这有点麻烦,而且必须复制/粘贴代码很糟糕,但它应该可以工作。

1.)将GrizzlyServerContainer复制到新的GrizzlySLServerContainer类中。

2.)将提供SSL配置数据的方法添加到新的Container类中。

3.)将数据添加到NetworkListener以实例化SSL

4.)将您的新类添加到jar的META-INF/servvces目录中。

相关内容

  • 没有找到相关文章

最新更新