首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在grizzly上设置websocket SSL

在grizzly上设置websocket SSL
EN

Stack Overflow用户
提问于 2014-09-17 14:51:54
回答 1查看 2.6K关注 0票数 0

我正在尝试在灰色容器上使用"javax.websocket.server.ServerEndpoint“来配置SSL上的javax.websocket.server.ServerEndpoint。但是,我找不到任何方法将SSL属性设置为我的端点。

我的端点代码:

代码语言:javascript
复制
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实例中:

代码语言:javascript
复制
Server ptiWebsocket = new Server("localhost", 8025, "/", null, WebsocketEndpoint.class);
ptiWebsocket.start();

我已经为玻璃鱼做了这项工作,这很容易,但是在这里我找不到任何方法去做。

以及依赖关系:

代码语言:javascript
复制
   <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> 

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-01 23:13:30

看一下tyrus的源代码,看起来这是不受支持的。你需要做一个像org.glassfish.tyrus.container.grizzly.server.GrizzlyServerContainer.一样的新ServerContainerFactory去把吉特卜的密码拿出来。你可以自己做GrizzlySSLServerContainer。然后将SSL添加到start方法中的NetworkListener中。然后,您可以使用JAR将新META-INF/services/org.glassfish.tyrus.spi.ServerContainerFactory类的完整限定名添加到JAR中,Tyrus应该将其取出来。

这有点麻烦,而且不得不复制/粘贴代码是很糟糕的,但它应该能工作。

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

2.)向新容器类中添加提供SSL配置数据的方法。

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

4.)将新类添加到jar的META/serivces目录中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25893850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档