gpt4 book ai didi

websocket - 将 Jersey 与 Tyrus 结合

转载 作者:行者123 更新时间:2023-12-03 07:56:26 25 4
gpt4 key购买 nike

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

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 注释资源。我想在同一个服务器实例上使用 Tyrus 添加 websocket 注释( @ServerEndpoint@OnOpen@OnMessage 等)资源(在“ http://127.0.0.1:8080/websocket ”中说)但是我能找到的所有文档展示了如何使用 Tyrus + 一个 Grizzly 容器启动一个独立的 websocket 服务器,而不是与 Jersey 结合使用。我正在寻找类似的东西:
server.getServerConfiguration().addHttpHandler(new SomeTyrusHttpHandler("/websocket"));

但我找不到类似于 SomeTyrusHttpHandler 的任何内容.如何将 Jersey 和 Tyrus 合并到一个 Grizzly 服务器中?

最佳答案

好问题,但目前这个问题没有好的答案。你仍然可以这样做,但这需要深入了解 Grizzly 的内部结构; Tyrus 由插件注册(请参阅 WebSocketAddOn ),它可以与 Jersey 注册到该容器的方式结合使用。

请记住,将这两个框架集成在一起并非易事——在单个容器中运行它们是第一步,但还有其他一些事情需要处理,例如“实例提供者”、生命周期调整等。我相信这个话题超出了一个 SO 答案的范围——你可以期待我或其他 Tyrus/Jersey 团队成员的博客文章。 (一旦完成,我会在这里发布)。

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

关于websocket - 将 Jersey 与 Tyrus 结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com