首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌入Karaf的Jetty中定义Websocket

在嵌入Karaf的Jetty中定义Websocket
EN

Stack Overflow用户
提问于 2017-01-30 02:44:35
回答 1查看 695关注 0票数 0

我正在使用Apache Karaf 4.0.7创建一个服务器应用程序,该应用程序使用Websockets与客户端应用程序通信以发送/接收数据。我想为已经在Karaf中运行的嵌入式Jetty服务器定义一个Websockets端点。

下面是我在BundleActivator中定义Websockets端点的代码。这段代码可以工作,并允许我建立连接,但捆绑包在“正在启动”状态下无限期地挂起。

代码语言:javascript
复制
    public void start(BundleContext bundleContext) throws Exception {
    Server server = new Server();
    ServerConnector connector = new ServerConnector(server);
    connector.setPort(8080);
    server.addConnector(connector);

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    server.setHandler(context);

    try
    {
        // Initialize javax.websocket layer
        ServerContainer wscontainer = WebSocketServerContainerInitializer.configureContext(context);

        // Add WebSocket endpoint to javax.websocket layer
        wscontainer.addEndpoint(UserWebsocketResource.class);

        server.start();
        server.dump(System.err);
        server.join();
    }
    catch (Throwable t)
    {
        t.printStackTrace(System.err);
    }
}

我想知道问题是不是我正在创建一个新的Jetty服务器,而server.start()正在创建正在运行的线程,并且不允许捆绑包达到“活动”状态?当前关于使用Jetty/Karaf的文档很少,而且我还添加了使用OSGI包的复杂性。

有没有更好的方式将websockets与嵌入式Jetty结合使用?是否需要修改Karaf/etc中的PAX文件并添加新的连接器?对于初级工程师来说,所有这些交互技术都很难驾驭!请并感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-01-30 22:46:50

在上面的示例中,您通过server.join()挂起了激活器,这就是捆绑包处于启动阶段的原因。

我认为下面的示例已经足够好,可以看看如何将websocket添加到您的捆绑包中:https://github.com/ops4j/org.ops4j.pax.web/tree/master/samples/karaf-websocket

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

https://stackoverflow.com/questions/41924600

复制
相关文章

相似问题

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