diff --git a/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java b/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java index 5bd8b1f68d5..8f8ec5cad17 100644 --- a/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java +++ b/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -231,25 +231,29 @@ public void setSuspendTimeout(final long timeOut, final TimeUnit timeUnit) throw public OutputStream writeResponseStatusAndHeaders(final long contentLength, final ContainerResponse context) throws ContainerException { - try { - final javax.ws.rs.core.Response.StatusType statusInfo = context.getStatusInfo(); - if (statusInfo.getReasonPhrase() == null) { - grizzlyResponse.setStatus(statusInfo.getStatusCode()); - } else { - grizzlyResponse.setStatus(statusInfo.getStatusCode(), statusInfo.getReasonPhrase()); - } + if (!grizzlyResponse.isCommitted()) { + try { + final javax.ws.rs.core.Response.StatusType statusInfo = context.getStatusInfo(); + if (statusInfo.getReasonPhrase() == null) { + grizzlyResponse.setStatus(statusInfo.getStatusCode()); + } else { + grizzlyResponse.setStatus(statusInfo.getStatusCode(), statusInfo.getReasonPhrase()); + } - grizzlyResponse.setContentLengthLong(contentLength); + grizzlyResponse.setContentLengthLong(contentLength); - for (final Map.Entry> e : context.getStringHeaders().entrySet()) { - for (final String value : e.getValue()) { - grizzlyResponse.addHeader(e.getKey(), value); + for (final Map.Entry> e : context.getStringHeaders().entrySet()) { + for (final String value : e.getValue()) { + grizzlyResponse.addHeader(e.getKey(), value); + } } - } - return grizzlyResponse.getOutputStream(); - } finally { - logger.debugLog("{0} - writeResponseStatusAndHeaders() called", name); + return grizzlyResponse.getOutputStream(); + } finally { + logger.debugLog("{0} - writeResponseStatusAndHeaders() called", name); + } + } else { + return null; } }