首页 > 解决方案 > 泽西岛的 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 实现)

标签: jerseyjax-rsserver-sent-eventsgrizzly

解决方案


推荐阅读