首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合Jersey和Tyrus

结合Jersey和Tyrus
EN

Stack Overflow用户
提问于 2015-04-20 22:46:25
回答 1查看 1.5K关注 0票数 6

我有一个Jersey JAX-RS应用程序,它在Grizzly实例上运行:

代码语言:javascript
复制
public class Application {
    public static final String BASE_URI = "http://127.0.0.1:8080/rest";

    public static void main(String[] args) throws IOException {
        ResourceConfig rc = new ResourceConfig().packages("my.package.rest");
        HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
        System.out.println("Server started, press any key to stop.");
        System.in.read();
        server.shutdownNow();
    }
}

my.package.rest内部有带JAX-RS注释的资源。我想添加带注释的websocket (@ServerEndpoint@OnOpen@OnMessage等)资源,但我能找到的所有文档都展示了如何使用Tyrus + Grizzly容器启动独立的websocket服务器,而不是与Jersey结合使用。我正在寻找类似这样的东西:

代码语言:javascript
复制
server.getServerConfiguration().addHttpHandler(new SomeTyrusHttpHandler("/websocket"));

但我找不到任何类似于SomeTyrusHttpHandler的东西。如何将Jersey和Tyrus合并到单个Grizzly服务器中?

EN

回答 1

Stack Overflow用户

发布于 2015-04-21 17:17:36

问得好,但这个问题目前还没有好的答案。你仍然可以这样做,但这需要深入研究Grizzly的内部结构;Tyrus是通过一个插件注册的(参见WebSocketAddOn),它可以与Jersey的注册方式相结合来注册到该容器中。

请记住,将这两个框架集成在一起并不是一个微不足道的挑战-在一个容器中运行它们是第一步,但还有其他事情需要注意,比如“实例提供者”,生命周期调整,等等。我相信这个话题超出了一个答案的范围-你可以期待我或其他Tyrus/Jersey团队成员就此发表博客。(一旦完成,我会在这里张贴)。

无论如何,我建议采取更保守的方法,使用一些支持Servlet 3.1的轻量级容器;这应该需要您的工作少得多,并且您将拥有标准的Servlet运行时/生命周期。

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

https://stackoverflow.com/questions/29751116

复制
相关文章

相似问题

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