Fix Grizzly on close when error

Signed-off-by: Jorge Bescos Gascon <jorge.bescos.gascon@oracle.com>
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 5bd8b1f..8f8ec5c 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 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());
-                }
-
-                grizzlyResponse.setContentLengthLong(contentLength);
-
-                for (final Map.Entry<String, List<String>> e : context.getStringHeaders().entrySet()) {
-                    for (final String value : e.getValue()) {
-                        grizzlyResponse.addHeader(e.getKey(), value);
+            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());
                     }
-                }
 
-                return grizzlyResponse.getOutputStream();
-            } finally {
-                logger.debugLog("{0} - writeResponseStatusAndHeaders() called", name);
+                    grizzlyResponse.setContentLengthLong(contentLength);
+
+                    for (final Map.Entry<String, List<String>> 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);
+                }
+            } else {
+                return null;
             }
         }