diff --git a/examples/tiny-webapp/Hello/src/java/wombat/HelloServlet.java b/examples/tiny-webapp/Hello/src/java/wombat/HelloServlet.java index 675d5e2076..5061973a8c 100644 --- a/examples/tiny-webapp/Hello/src/java/wombat/HelloServlet.java +++ b/examples/tiny-webapp/Hello/src/java/wombat/HelloServlet.java @@ -21,13 +21,16 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) String name = request.getParameter("name"); response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - logger.info("About to say hello to "+name); - - out.println(""); - out.println("

Hello there " + name + ". How are you today?

"); - out.println(""); - out.close(); + try{ + PrintWriter out = response.getWriter(); + + logger.info("About to say hello to "+name); + + out.println(""); + out.println("

Hello there " + name + ". How are you today?

"); + out.println(""); + }finally{ + out.close(); + } } } diff --git a/examples/tiny-webapp/Tata/src/java/wombat/TataServlet.java b/examples/tiny-webapp/Tata/src/java/wombat/TataServlet.java index 0bda18d66a..52edd463b7 100644 --- a/examples/tiny-webapp/Tata/src/java/wombat/TataServlet.java +++ b/examples/tiny-webapp/Tata/src/java/wombat/TataServlet.java @@ -21,13 +21,16 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) String name = request.getParameter("name"); response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - logger.info("About to say Tata to "+name); + try{ + PrintWriter out = response.getWriter(); + + logger.info("About to say Tata to "+name); - out.println(""); - out.println("

Many tata's to you " + name + ". How are you today?

"); - out.println(""); - out.close(); + out.println(""); + out.println("

Many tata's to you " + name + ". How are you today?

"); + out.println(""); + }finally{ + out.close(); + } } } diff --git a/src/main/java/org/apache/log4j/helpers/SyslogWriter.java b/src/main/java/org/apache/log4j/helpers/SyslogWriter.java index bfbbcb8a6e..74c881bacf 100644 --- a/src/main/java/org/apache/log4j/helpers/SyslogWriter.java +++ b/src/main/java/org/apache/log4j/helpers/SyslogWriter.java @@ -138,8 +138,9 @@ public void close() { flush(); } catch (IOException e) { // should throw it ... can't change method sig. though + }finally{ + ds.close(); } - ds.close(); } } diff --git a/src/main/java/org/apache/log4j/joran/action/PropertyAction.java b/src/main/java/org/apache/log4j/joran/action/PropertyAction.java index 473dc1f76a..22ecabe2ed 100644 --- a/src/main/java/org/apache/log4j/joran/action/PropertyAction.java +++ b/src/main/java/org/apache/log4j/joran/action/PropertyAction.java @@ -61,8 +61,7 @@ public void begin( try { FileInputStream istream = new FileInputStream(fileName); - props.load(istream); - istream.close(); + props.load(istream); setProperties(ec, props); } catch (IOException e) { String errMsg = "Could not read properties file [" + fileName + "]."; @@ -70,7 +69,9 @@ public void begin( ec.addError(new ErrorItem(INVALID_ATTRIBUTES, e)); getLogger().error("Ignoring configuration file [" + fileName + "]."); - } + }finally{ + istream.close(); + } } else if ( !(Option.isEmpty(name) || Option.isEmpty(value)) && Option.isEmpty(fileName)) { diff --git a/src/main/java/org/apache/log4j/net/JMSReceiver.java b/src/main/java/org/apache/log4j/net/JMSReceiver.java index b26541a651..9073144d40 100644 --- a/src/main/java/org/apache/log4j/net/JMSReceiver.java +++ b/src/main/java/org/apache/log4j/net/JMSReceiver.java @@ -203,10 +203,13 @@ public void activateOptions() { if (jndiPath == null || jndiPath.equals("")) { ctx = new InitialContext(); } else { - FileInputStream is = new FileInputStream(jndiPath); - Properties p = new Properties(); - p.load(is); - is.close(); + try{ + FileInputStream is = new FileInputStream(jndiPath); + Properties p = new Properties(); + p.load(is); + }finally{ + is.close(); + } ctx = new InitialContext(p); } diff --git a/src/main/java/org/apache/log4j/rolling/helper/GZCompressAction.java b/src/main/java/org/apache/log4j/rolling/helper/GZCompressAction.java index d5015c4c75..a88ff9e2b0 100644 --- a/src/main/java/org/apache/log4j/rolling/helper/GZCompressAction.java +++ b/src/main/java/org/apache/log4j/rolling/helper/GZCompressAction.java @@ -108,14 +108,14 @@ public static boolean execute( GZIPOutputStream gzos = new GZIPOutputStream(fos); byte[] inbuf = new byte[8102]; int n; - - while ((n = fis.read(inbuf)) != -1) { - gzos.write(inbuf, 0, n); + try{ + while ((n = fis.read(inbuf)) != -1) { + gzos.write(inbuf, 0, n); + } + }finally{ + gzos.close(); + fis.close(); } - - gzos.close(); - fis.close(); - if (deleteSource) { if (!source.delete() && (logger != null)) { logger.info("Unable to delete {}.", source.toString()); diff --git a/src/main/java/org/apache/log4j/rolling/helper/ZipCompressAction.java b/src/main/java/org/apache/log4j/rolling/helper/ZipCompressAction.java index 48611a8831..b9978e0b65 100644 --- a/src/main/java/org/apache/log4j/rolling/helper/ZipCompressAction.java +++ b/src/main/java/org/apache/log4j/rolling/helper/ZipCompressAction.java @@ -109,18 +109,19 @@ public static boolean execute( ZipOutputStream zos = new ZipOutputStream(fos); ZipEntry zipEntry = new ZipEntry(source.getName()); - zos.putNextEntry(zipEntry); - - byte[] inbuf = new byte[8102]; - int n; - - while ((n = fis.read(inbuf)) != -1) { - zos.write(inbuf, 0, n); + try{ + zos.putNextEntry(zipEntry); + + byte[] inbuf = new byte[8102]; + int n; + + while ((n = fis.read(inbuf)) != -1) { + zos.write(inbuf, 0, n); + } + }finally{ + zos.close(); + fis.close(); } - - zos.close(); - fis.close(); - if (deleteSource) { if (!source.delete() && (logger != null)) { logger.info("Unable to delete {}.", source.toString()); diff --git a/tests/src/java/org/apache/log4j/AbstractAppenderTest.java b/tests/src/java/org/apache/log4j/AbstractAppenderTest.java index d973864368..0f20354f42 100644 --- a/tests/src/java/org/apache/log4j/AbstractAppenderTest.java +++ b/tests/src/java/org/apache/log4j/AbstractAppenderTest.java @@ -47,21 +47,26 @@ public void activateOptions() {} public void testNewAppender() { // new appenders whould be inactive - AppenderSkeleton appender = getAppender(); - assertFalse( appender.isActive()); - assertFalse(appender.isClosed()); - - appender.close(); + try{ + AppenderSkeleton appender = getAppender(); + assertFalse( appender.isActive()); + assertFalse(appender.isClosed()); + }finally{ + appender.close(); + } assertTrue(appender.isClosed()); } public void testConfiguredAppender() { - AppenderSkeleton appender = getConfiguredAppender(); - appender.activateOptions(); - assertTrue(appender.isActive()); - assertFalse(appender.isClosed()); - - appender.close(); + try{ + AppenderSkeleton appender = getConfiguredAppender(); + appender.activateOptions(); + assertTrue(appender.isActive()); + assertFalse(appender.isClosed()); + }finally{ + appender.close(); + } + assertTrue(appender.isClosed()); } diff --git a/tests/src/java/org/apache/log4j/PatternLayoutTestCase.java b/tests/src/java/org/apache/log4j/PatternLayoutTestCase.java index e7b1a14a54..5ec42d0c93 100644 --- a/tests/src/java/org/apache/log4j/PatternLayoutTestCase.java +++ b/tests/src/java/org/apache/log4j/PatternLayoutTestCase.java @@ -356,10 +356,13 @@ public void test16() throws Exception { PropertyConfigurator.configure("input/pattern/patternLayout16.properties"); common(); final long end = new Date().getTime(); - FileReader reader = new FileReader("output/patternLayout16.log"); - char chars[] = new char[50]; - reader.read(chars, 0, chars.length); - reader.close(); + try{ + FileReader reader = new FileReader("output/patternLayout16.log"); + char chars[] = new char[50]; + reader.read(chars, 0, chars.length); + }finally{ + reader.close(); + } SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); format.setTimeZone(TimeZone.getTimeZone("GMT+0")); String utcStr = new String(chars, 0, 19); diff --git a/tests/src/java/org/apache/log4j/PropertyConfiguratorTest.java b/tests/src/java/org/apache/log4j/PropertyConfiguratorTest.java index 23c4b573e8..82c7fa81ee 100644 --- a/tests/src/java/org/apache/log4j/PropertyConfiguratorTest.java +++ b/tests/src/java/org/apache/log4j/PropertyConfiguratorTest.java @@ -37,9 +37,12 @@ public PropertyConfiguratorTest(final String testName) { */ public void testBadUnicodeEscape() throws IOException { String fileName = "output/badescape.properties"; - FileWriter writer = new FileWriter(fileName); - writer.write("log4j.rootLogger=\\uXX41"); - writer.close(); + try{ + FileWriter writer = new FileWriter(fileName); + writer.write("log4j.rootLogger=\\uXX41"); + }finally{ + writer.close(); + } PropertyConfigurator.configure(fileName); File file = new File(fileName); assertTrue(file.delete()) ; @@ -53,9 +56,12 @@ public void testBadUnicodeEscape() throws IOException { */ public void testURL() throws IOException { File file = new File("output/unclosed.properties"); - FileWriter writer = new FileWriter(file); - writer.write("log4j.rootLogger=debug"); - writer.close(); + try{ + FileWriter writer = new FileWriter(file); + writer.write("log4j.rootLogger=debug"); + }finally{ + writer.close(); + } URL url = file.toURL(); PropertyConfigurator.configure(url); assertTrue(file.delete()); @@ -70,9 +76,12 @@ public void testURL() throws IOException { */ public void testURLBadEscape() throws IOException { File file = new File("output/urlbadescape.properties"); - FileWriter writer = new FileWriter(file); - writer.write("log4j.rootLogger=\\uXX41"); - writer.close(); + try{ + FileWriter writer = new FileWriter(file); + writer.write("log4j.rootLogger=\\uXX41"); + }finally{ + writer.close(); + } URL url = file.toURL(); PropertyConfigurator.configure(url); assertTrue(file.delete()); diff --git a/tests/src/java/org/apache/log4j/concurrent/FileAppenderTest.java b/tests/src/java/org/apache/log4j/concurrent/FileAppenderTest.java index 317906c085..e5ace4cf3b 100644 --- a/tests/src/java/org/apache/log4j/concurrent/FileAppenderTest.java +++ b/tests/src/java/org/apache/log4j/concurrent/FileAppenderTest.java @@ -73,9 +73,12 @@ public void testBasic() throws Exception { } private void readHI() throws Exception { - BufferedReader r = new BufferedReader(new FileReader(f1)); - assertEquals("DEBUG - HI", r.readLine()); - r.close(); + try{ + BufferedReader r = new BufferedReader(new FileReader(f1)); + assertEquals("DEBUG - HI", r.readLine()); + }finally{ + r.close(); + } } /** diff --git a/tests/src/java/org/apache/log4j/html/Loop.java b/tests/src/java/org/apache/log4j/html/Loop.java index 5935af33b6..3458602430 100644 --- a/tests/src/java/org/apache/log4j/html/Loop.java +++ b/tests/src/java/org/apache/log4j/html/Loop.java @@ -36,16 +36,19 @@ public static void main(String[] args) { HTMLLayout htmlLayout = new HTMLLayout("%sn%date%thread%level%logger%m"); //htmlLayout.setInternalCSS(true); //EnhancedHTMLLayout htmlLayout = new EnhancedHTMLLayout("%relative%thread%level%logger%m"); - FileAppender appender = new FileAppender(); - appender.setFile("toto.html"); - appender.setAppend(false); - appender.setLayout(htmlLayout); - appender.activateOptions(); - Logger root = Logger.getRootLogger(); - root.addAppender(appender); + try{ + FileAppender appender = new FileAppender(); + appender.setFile("toto.html"); + appender.setAppend(false); + appender.setLayout(htmlLayout); + appender.activateOptions(); + Logger root = Logger.getRootLogger(); + root.addAppender(appender); - loop(200); - appender.close(); + loop(200); + }finally{ + appender.close(); + } } static void loop(int len) { diff --git a/tests/src/java/org/apache/log4j/net/TelnetAppenderTest.java b/tests/src/java/org/apache/log4j/net/TelnetAppenderTest.java index 0896d5d84f..8009287cb5 100644 --- a/tests/src/java/org/apache/log4j/net/TelnetAppenderTest.java +++ b/tests/src/java/org/apache/log4j/net/TelnetAppenderTest.java @@ -25,28 +25,32 @@ public void run() { if (c == -1) break; bo.write(c); - } - s.close(); + } } catch (IOException e) { e.printStackTrace(); + }finally{ + s.close(); } } } public void testIt() throws Exception { int oldActive = Thread.activeCount(); - TelnetAppender ta = new TelnetAppender(); - ta.setName("ta"); - ta.setPort(port); - ta.setLayout(new PatternLayout("%p - %m")); - ta.activateOptions(); - Logger l = Logger.getLogger("x"); - l.addAppender(ta); - Thread t = new ReadThread(); - t.start(); - Thread.sleep(200); - l.info("hi"); - ta.close(); + try{ + TelnetAppender ta = new TelnetAppender(); + ta.setName("ta"); + ta.setPort(port); + ta.setLayout(new PatternLayout("%p - %m")); + ta.activateOptions(); + Logger l = Logger.getLogger("x"); + l.addAppender(ta); + Thread t = new ReadThread(); + t.start(); + Thread.sleep(200); + l.info("hi"); + }finally{ + ta.close(); + } Thread.sleep(200); t.interrupt(); t.join(); diff --git a/tests/src/java/org/apache/log4j/rolling/FileOpener.java b/tests/src/java/org/apache/log4j/rolling/FileOpener.java index aad8b9f846..0862d2ce69 100644 --- a/tests/src/java/org/apache/log4j/rolling/FileOpener.java +++ b/tests/src/java/org/apache/log4j/rolling/FileOpener.java @@ -28,10 +28,13 @@ */ public class FileOpener { public static void main(String[] args) throws Exception { - InputStream is = new FileInputStream("output/test.log"); - is.read(); - Thread.sleep(10000); - is.close(); + try{ + InputStream is = new FileInputStream("output/test.log"); + is.read(); + Thread.sleep(10000); + }finally{ + is.close(); + } System.out.println("Exiting FileOpener"); } } diff --git a/tests/src/java/org/apache/log4j/rolling/TimeBasedRollingTest.java b/tests/src/java/org/apache/log4j/rolling/TimeBasedRollingTest.java index 7144c572cd..2b8b669b16 100644 --- a/tests/src/java/org/apache/log4j/rolling/TimeBasedRollingTest.java +++ b/tests/src/java/org/apache/log4j/rolling/TimeBasedRollingTest.java @@ -121,58 +121,62 @@ public void test1() throws Exception { */ public void test2() throws Exception { String datePattern = "yyyy-MM-dd_HH_mm_ss"; - - PatternLayout layout1 = new PatternLayout("%c{1} - %m%n"); - RollingFileAppender rfa1 = new RollingFileAppender(); - rfa1.setLayout(layout1); - - TimeBasedRollingPolicy tbrp1 = new TimeBasedRollingPolicy(); - tbrp1.setFileNamePattern("output/test2-%d{" + datePattern + "}"); - tbrp1.activateOptions(); - rfa1.setRollingPolicy(tbrp1); - rfa1.activateOptions(); - logger.addAppender(rfa1); - - SimpleDateFormat sdf = new SimpleDateFormat(datePattern); - String[] filenames = new String[4]; - - Calendar cal = Calendar.getInstance(); - - for (int i = 0; i < 4; i++) { - filenames[i] = "output/test2-" + sdf.format(cal.getTime()); - cal.add(Calendar.SECOND, 1); - } - - System.out.println("Waiting until next second and 100 millis."); - delayUntilNextSecond(100); - System.out.println("Done waiting."); - - for (int i = 0; i <= 2; i++) { - logger.debug("Hello---" + i); - Thread.sleep(500); + try{ + PatternLayout layout1 = new PatternLayout("%c{1} - %m%n"); + RollingFileAppender rfa1 = new RollingFileAppender(); + rfa1.setLayout(layout1); + + TimeBasedRollingPolicy tbrp1 = new TimeBasedRollingPolicy(); + tbrp1.setFileNamePattern("output/test2-%d{" + datePattern + "}"); + tbrp1.activateOptions(); + rfa1.setRollingPolicy(tbrp1); + rfa1.activateOptions(); + logger.addAppender(rfa1); + + SimpleDateFormat sdf = new SimpleDateFormat(datePattern); + String[] filenames = new String[4]; + + Calendar cal = Calendar.getInstance(); + + for (int i = 0; i < 4; i++) { + filenames[i] = "output/test2-" + sdf.format(cal.getTime()); + cal.add(Calendar.SECOND, 1); + } + + System.out.println("Waiting until next second and 100 millis."); + delayUntilNextSecond(100); + System.out.println("Done waiting."); + + for (int i = 0; i <= 2; i++) { + logger.debug("Hello---" + i); + Thread.sleep(500); + } + + logger.removeAppender(rfa1); + }finally{ + rfa1.close(); } - - logger.removeAppender(rfa1); - rfa1.close(); - - PatternLayout layout2 = new PatternLayout("%c{1} - %m%n"); - RollingFileAppender rfa2 = new RollingFileAppender(); - rfa2.setLayout(layout2); - - TimeBasedRollingPolicy tbrp2 = new TimeBasedRollingPolicy(); - tbrp2.setFileNamePattern("output/test2-%d{" + datePattern + "}"); - tbrp2.activateOptions(); - rfa2.setRollingPolicy(tbrp2); - rfa2.activateOptions(); - logger.addAppender(rfa2); - - for (int i = 3; i <= 4; i++) { - logger.debug("Hello---" + i); - Thread.sleep(500); + try{ + PatternLayout layout2 = new PatternLayout("%c{1} - %m%n"); + RollingFileAppender rfa2 = new RollingFileAppender(); + rfa2.setLayout(layout2); + + TimeBasedRollingPolicy tbrp2 = new TimeBasedRollingPolicy(); + tbrp2.setFileNamePattern("output/test2-%d{" + datePattern + "}"); + tbrp2.activateOptions(); + rfa2.setRollingPolicy(tbrp2); + rfa2.activateOptions(); + logger.addAppender(rfa2); + + for (int i = 3; i <= 4; i++) { + logger.debug("Hello---" + i); + Thread.sleep(500); + } + + }finally{ + rfa2.close(); } - rfa2.close(); - for (int i = 0; i < 4; i++) { assertTrue(Compare.compare(filenames[i], "witness/rolling/tbr-test2." + i)); } diff --git a/tests/src/java/org/apache/log4j/util/Compare.java b/tests/src/java/org/apache/log4j/util/Compare.java index b97edefba6..aaf7e44aac 100644 --- a/tests/src/java/org/apache/log4j/util/Compare.java +++ b/tests/src/java/org/apache/log4j/util/Compare.java @@ -85,30 +85,34 @@ public static boolean compare(String file1, String file2, BufferedReader in1, Bu */ private static void outputFile(String file) throws FileNotFoundException, IOException { - BufferedReader in1 = new BufferedReader(new FileReader(file)); - - String s1; - int lineCounter = 0; - System.out.println("--------------------------------"); - System.out.println("Contents of " + file + ":"); - - while ((s1 = in1.readLine()) != null) { - lineCounter++; - System.out.print(lineCounter); - - if (lineCounter < 10) { - System.out.print(" : "); - } else if (lineCounter < 100) { - System.out.print(" : "); - } else if (lineCounter < 1000) { - System.out.print(" : "); - } else { - System.out.print(": "); - } - - System.out.println(s1); - } - in1.close(); + try{ + BufferedReader in1 = new BufferedReader(new FileReader(file)); + + String s1; + int lineCounter = 0; + System.out.println("--------------------------------"); + System.out.println("Contents of " + file + ":"); + + while ((s1 = in1.readLine()) != null) { + lineCounter++; + System.out.print(lineCounter); + + if (lineCounter < 10) { + System.out.print(" : "); + } else if (lineCounter < 100) { + System.out.print(" : "); + } else if (lineCounter < 1000) { + System.out.print(" : "); + } else { + System.out.print(": "); + } + + System.out.println(s1); + } + }finally{ + in1.close(); + } + } public static boolean gzCompare(String file1, String file2) diff --git a/tests/src/java/org/apache/log4j/util/SerializationTestHelper.java b/tests/src/java/org/apache/log4j/util/SerializationTestHelper.java index 264c175e93..6c982c4ce0 100644 --- a/tests/src/java/org/apache/log4j/util/SerializationTestHelper.java +++ b/tests/src/java/org/apache/log4j/util/SerializationTestHelper.java @@ -111,11 +111,14 @@ public static void assertStreamEquals( File witnessFile = new File(witness); if (witnessFile.exists()) { - int skipIndex = 0; - byte[] expected = new byte[actual.length]; - FileInputStream is = new FileInputStream(witnessFile); - int bytesRead = is.read(expected); - is.close(); + int skipIndex = 0; + byte[] expected = new byte[actual.length]; + try{ + FileInputStream is = new FileInputStream(witnessFile); + int bytesRead = is.read(expected); + }finally{ + is.close(); + } TestCase.assertEquals(bytesRead, actual.length); int endScan = actual.length; @@ -135,13 +138,16 @@ public static void assertStreamEquals( } } } else { - // - // if the file doesn't exist then - // assume that we are setting up and need to write it - FileOutputStream os = new FileOutputStream(witnessFile); - os.write(actual); - os.close(); - TestCase.fail("Writing witness file " + witness); + // + // if the file doesn't exist then + // assume that we are setting up and need to write it + try{ + FileOutputStream os = new FileOutputStream(witnessFile); + os.write(actual); + }finally{ + os.close(); + } + TestCase.fail("Writing witness file " + witness); } } } diff --git a/tests/src/java/org/apache/log4j/varia/ERFATestCase.java b/tests/src/java/org/apache/log4j/varia/ERFATestCase.java index 291cf36f48..eb1c057eee 100644 --- a/tests/src/java/org/apache/log4j/varia/ERFATestCase.java +++ b/tests/src/java/org/apache/log4j/varia/ERFATestCase.java @@ -69,15 +69,18 @@ public void testConstructor() { * @deprecated since class under test is deprecated. */ void sendMessage(int port, final String msg, final String expectedResponse) throws IOException { - Socket socket = new Socket((String) null, port); - DataInputStream reader = new DataInputStream(socket.getInputStream()); - DataOutputStream writer = new DataOutputStream(socket.getOutputStream()); - writer.writeUTF(msg); - String response = reader.readUTF(); - assertEquals(expectedResponse, response); - reader.close(); - writer.close(); - socket.close(); + try{ + Socket socket = new Socket((String) null, port); + DataInputStream reader = new DataInputStream(socket.getInputStream()); + DataOutputStream writer = new DataOutputStream(socket.getOutputStream()); + writer.writeUTF(msg); + String response = reader.readUTF(); + assertEquals(expectedResponse, response); + }finally{ + reader.close(); + writer.close(); + socket.close(); + } } /** diff --git a/tests/webapps/Tata/src/java/wombat/XServlet.java b/tests/webapps/Tata/src/java/wombat/XServlet.java index 10e7d69aa6..d32d1f583d 100644 --- a/tests/webapps/Tata/src/java/wombat/XServlet.java +++ b/tests/webapps/Tata/src/java/wombat/XServlet.java @@ -19,11 +19,14 @@ public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - String result = Util.foo(MY_ENTRY); - - out.println(result); - out.close(); + try{ + PrintWriter out = response.getWriter(); + + String result = Util.foo(MY_ENTRY); + + out.println(result); + }finally{ + out.close(); + } } } diff --git a/tests/webapps/Titi/src/java/wombat/XServlet.java b/tests/webapps/Titi/src/java/wombat/XServlet.java index 10e7d69aa6..1453429afd 100644 --- a/tests/webapps/Titi/src/java/wombat/XServlet.java +++ b/tests/webapps/Titi/src/java/wombat/XServlet.java @@ -19,11 +19,14 @@ public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - String result = Util.foo(MY_ENTRY); - - out.println(result); - out.close(); + try{ + PrintWriter out = response.getWriter(); + + String result = Util.foo(MY_ENTRY); + + out.println(result); + }finally{ + out.close(); + } } }