Write a simple Print Writer Wrapper to prevent the closing on end of try block
diff --git a/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java b/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java
index d40da4e..43adfef 100644
--- a/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java
+++ b/src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java
@@ -21,6 +21,8 @@
 package org.apache.sling.graphql.core.servlet;
 
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -315,8 +317,7 @@
             return;
         }
         // The Response Writer cannot be flushed or closed here to avoid issues with Redirects etc
-        try {
-            JsonWriter writer = Json.createWriter(response.getWriter());
+        try (JsonWriter writer = Json.createWriter(new NoCloseWriterWrapper(response.getWriter()))) {
             Map<String, Object> executionResult = queryExecutor.execute(query, result.getVariables(), resource,
                 request.getRequestPathInfo().getSelectors());
             writer.write(Json.createObjectBuilder(executionResult).build().asJsonObject());
@@ -329,8 +330,7 @@
         response.setContentType("application/json");
         response.setCharacterEncoding("UTF-8");
         // The Response Writer cannot be flushed or closed here to avoid issues with Redirects etc
-        try {
-            JsonWriter writer = Json.createWriter(response.getWriter());
+        try (JsonWriter writer = Json.createWriter(new NoCloseWriterWrapper(response.getWriter()))) {
             final QueryParser.Result result = QueryParser.fromJSON(persistedQuery);
             Map<String, Object> executionResult = queryExecutor.execute(result.getQuery(), result.getVariables(), request.getResource(),
                     request.getRequestPathInfo().getSelectors());
@@ -356,4 +356,12 @@
     }
 
 
+    private class NoCloseWriterWrapper extends PrintWriter {
+        public NoCloseWriterWrapper(@NotNull Writer out) {
+            super(out);
+        }
+
+        @Override
+        public void close() {}
+    }
 }
diff --git a/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java b/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java
index 1fe9d84..ae276cd 100644
--- a/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java
+++ b/src/test/java/org/apache/sling/graphql/core/servlet/GraphQLServletTest.java
@@ -54,6 +54,8 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -183,6 +185,7 @@
 
         MockSlingHttpServletResponse response = context.response();
         MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(context.bundleContext());
+        java.io.PrintWriter writer = spy(response.getWriter());
 
         request.setMethod("POST");
         request.setContent(TEST_QUERY.getBytes(StandardCharsets.UTF_8));
@@ -195,6 +198,7 @@
 
         servlet.doPost(request, response);
         assertEquals(expectedStatus, response.getStatus());
+        verify(writer, never()).close();
 }
 
     @Test