jersey - 泽西岛的 SSE:在 javax.ws.rs.sse.Sse 类中找不到合适的构造函数
问题描述
我正在使用 Jersey 2.28 实现服务器发送事件,但我无法让基本示例正常工作。
其他答案提到了依赖问题,我添加了所有必要的依赖,但无济于事:
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-sse</artifactId>
</dependency>
</dependencies>
我基本上复制粘贴了示例并运行了它,我尝试了在https://www.baeldung.com/java-ee-jax-rs-sse等教程中找到的变体,但它就是行不通
@GET
@Path("/locations")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void getServerSentEvents(@Context SseEventSink eventSink, @Context Sse sse) {
new Thread(() -> {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
final OutboundSseEvent event = sse.newEventBuilder().name("message-to-client")
.data(String.class, "Hello world " + i + "!").build();
eventSink.send(event);
}
}).start();
}
谁能为我提供使用 Jersey 的基本 SSE 的正确实现(我正在使用 grizzly 实现)
解决方案
推荐阅读
- android - 如何使用 Xamarin.forms 打开我的 Android 本机应用程序?
- llvm - LLVM IR 中的基本块似乎在汇编代码中被破坏
- python - 有没有一种简单的方法可以通过 python 从 S3 获取文件?
- vhdl - vhdl 程序中的指令模块如何工作?
- jquery - 编写自定义帖子类型分页插件
- html - 如何将产品类别列更改为 4?
- kubernetes - Tiller:拨打 tcp 127.0.0.1:80:连接:连接被拒绝
- c# - C# .Net SQL Server 2012 - 插入文件 - System.Data.SqlClient.SqlException
- angular8 - 自定义 Angular 2+ 步进模块
- python - TypeError: 当我们使用 (old='XYZ',new='ABC') 时,replace() 不接受关键字参数