Gio*_*ato 6 jax-rs jersey grizzly websocket tyrus
我有一个在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();
}
}
Run Code Online (Sandbox Code Playgroud)
里面my.package.rest有JAX-RS注释资源.我想补充的WebSocket注释(@ServerEndpoint,@OnOpen,@OnMessage等)在同一服务器实例使用泰鲁斯资源(在说" http://127.0.0.1:8080/websocket "),但我能找到的显示所有文件如何使用Tyrus + Grizzly容器启动独立的websocket服务器,而不是与Jersey结合使用.我正在寻找类似的东西:
server.getServerConfiguration().addHttpHandler(new SomeTyrusHttpHandler("/websocket"));
Run Code Online (Sandbox Code Playgroud)
但我找不到类似的东西SomeTyrusHttpHandler.如何在单个Grizzly服务器中结合Jersey和Tyrus?
好问题,但目前这个问题还没有好的答案。您仍然可以这样做,但需要深入了解 Grizzly 的内部结构;Tyrus 由插件注册(请参阅WebSocketAddOn),它可以与注册到该容器的 Jersey 方式结合起来。
请记住,将这两个框架集成在一起并不是一个简单的挑战 - 在单个容器中运行它们是第一步,但还有其他事情需要注意,例如“实例提供程序”、生命周期调整等。我相信这个主题超出了一个答案的范围 - 您可以期待我或其他 Tyrus/Jersey 团队成员关于此问题的博文。(完成后我会将其发布在这里)。
无论如何,我建议采取更保守的方法并使用一些支持 Servlet 3.1 的轻量级容器;这需要您做的工作少得多,并且您将拥有标准的 Servlet 运行时/生命周期。
| 归档时间: |
|
| 查看次数: |
1388 次 |
| 最近记录: |