You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Arut (Jira)" <ji...@apache.org> on 2025/12/12 10:03:00 UTC

[jira] [Created] (CXF-9189) Exceptions Not Logged When Using SseEventSink in JAX-RS SSE Endpoint

Arut created CXF-9189:
-------------------------

             Summary: Exceptions Not Logged When Using SseEventSink in JAX-RS SSE Endpoint
                 Key: CXF-9189
                 URL: https://issues.apache.org/jira/browse/CXF-9189
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS, logging
    Affects Versions: 3.4.2
         Environment: {code:java}
➜ mvn --version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: C:\Users\sbnet\Maven\apache-maven-3.9.9
Java version: 11.0.24, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-11
Default locale: ru_RU, platform encoding: Cp1251
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"{code}
            Reporter: Arut


When the *@Context SseEventSink sseEventSink* parameter is added to the method, logs are no longer displayed in it. For example, there are some exceptions that are visible only during debugging, but there are no logs from them. Regular logging via the *LoggerFactory.getLogger* doesn't work in this case either.

 
{code:java}
@GET
@Path("/shipMovementSubscribe")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void shipMovementSubscribe(@Context Sse sse, @Context SseEventSink sseEventSink) {
    java.util.logging.Logger julLogger = java.util.logging.Logger.getLogger("org.apache.tomcat.test");
    julLogger.severe("TEST JUL MESSAGE!");
    String link = request.getHeader("gameLink");
    if (link == null || link.isBlank()) {
        throw new BadRequestException("Empty 'gameLink' request header");
    }
    Game game = ...
    SseBroadcaster broadcaster = playersConnectionsMap.get(game.getId());
    if (broadcaster == null) {
        broadcaster = sse.newBroadcaster();
        playersConnectionsMap.put(game.getId(), broadcaster);
    }
    playersConnectionsMap.get(game.getId()).onError(
            (currentSseEventSink, error) -> {
                LOG.error(error.getMessage(), error);
                throw new BadRequestException("Something went wrong while executing shipMovementSubscribe");
            });
    broadcaster.register(sseEventSink);
    LOG.info("SUCCESSFUL LOGGING1!");
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    executorService.execute(() -> {
        try (SseEventSink sink = sseEventSink) {
            LOG.info("SUCCESSFUL LOGGING2!");
        }
    });
    if (true) {
        throw new RuntimeException("BUT THIS IS NOT LOGGING!");
    }
}
{code}
 

The messages "{*}CRITICAL TEST JUL MESSAGE!{*}", "{*}SUCCESSFUL LOGGING1!{*}" and "{*}SUCCESSFUL LOGGING2!{*}" are printed, but the exception with the message "{*}BUT THIS IS NOT LOGGING!{*}" is *not* printed.

Our *logging dependencies* are as follows:

 
{code:java}
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    <!-- JCL 1.2 Implemented Over SLF4J -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
{code}
 

We use the following {*}CXF dependencies{*}:

 
{code:java}
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
        <version>3.4.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-sse</artifactId>
        <version>3.4.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>3.4.2</version>
    </dependency>
{code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)