diff options
author | Mikhail Mazursky | 2013-08-28 03:58:56 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2013-09-09 04:24:31 +0000 |
commit | 767faece5c4692748d1ac8e130b2e4c5faa1ff20 (patch) | |
tree | 787e93c5bf452b69d28d737a04d57cddae0b7ede /jetty-server | |
parent | cdd95bb5515f35af090bcbcf6f9af03d5c6762c9 (diff) | |
download | org.eclipse.jetty.project-767faece5c4692748d1ac8e130b2e4c5faa1ff20.tar.gz org.eclipse.jetty.project-767faece5c4692748d1ac8e130b2e4c5faa1ff20.tar.xz org.eclipse.jetty.project-767faece5c4692748d1ac8e130b2e4c5faa1ff20.zip |
[Bug 415999] Fix some of FindBugs warnings
Mostly not closed streams/DB resources are fixed. But also less
important things.
Signed-off-by: Mikhail Mazursky <mikhail.mazursky@gmail.com>
Diffstat (limited to 'jetty-server')
14 files changed, 245 insertions, 282 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/NCSARequestLog.java b/jetty-server/src/main/java/org/eclipse/jetty/server/NCSARequestLog.java index ef11b3e0c7..33e6b6f7eb 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/NCSARequestLog.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/NCSARequestLog.java @@ -208,7 +208,7 @@ public class NCSARequestLog extends AbstractNCSARequestLog implements RequestLog { if (_writer==null) return; - _writer.write(requestEntry.toString()); + _writer.write(requestEntry); _writer.write(StringUtil.__LINE_SEPARATOR); _writer.flush(); } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java index b1fa612447..16c331cb94 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java @@ -423,8 +423,11 @@ public class Response implements HttpServletResponse writer.flush(); setContentLength(writer.size()); - writer.writeTo(getOutputStream()); - writer.destroy(); + try (ServletOutputStream outputStream = getOutputStream()) + { + writer.writeTo(outputStream); + writer.destroy(); + } } } else if (code!=SC_PARTIAL_CONTENT) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java index 3cccf31976..2d8d6ea9a1 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java @@ -169,9 +169,10 @@ public class DefaultHandler extends AbstractHandler writer.write("\n</BODY>\n</HTML>\n"); writer.flush(); response.setContentLength(writer.size()); - OutputStream out=response.getOutputStream(); - writer.writeTo(out); - out.close(); + try (OutputStream out=response.getOutputStream()) + { + writer.writeTo(out); + } } /* ------------------------------------------------------------ */ diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java index d1e13ce35b..07b289d8d6 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java @@ -281,7 +281,7 @@ public class ResourceHandler extends HandlerWrapper { LOG.warn(e.toString()); LOG.debug(e); - throw new IllegalArgumentException(stylesheet.toString()); + throw new IllegalArgumentException(stylesheet); } } @@ -291,7 +291,7 @@ public class ResourceHandler extends HandlerWrapper */ public String getCacheControl() { - return _cacheControl.toString(); + return _cacheControl; } /* ------------------------------------------------------------ */ @@ -484,7 +484,7 @@ public class ResourceHandler extends HandlerWrapper String mime=_mimeTypes.getMimeByExtension(resource.toString()); if (mime==null) mime=_mimeTypes.getMimeByExtension(request.getPathInfo()); - doResponseHeaders(response,resource,mime!=null?mime.toString():null); + doResponseHeaders(response,resource,mime); if (_etags) baseRequest.getResponse().getHttpFields().put(HttpHeader.ETAG,etag); @@ -615,7 +615,7 @@ public class ResourceHandler extends HandlerWrapper response.setContentLength((int)length); if (_cacheControl!=null) - response.setHeader(HttpHeader.CACHE_CONTROL.asString(),_cacheControl.toString()); + response.setHeader(HttpHeader.CACHE_CONTROL.asString(),_cacheControl); } } } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java index 6590e2420e..c57188d5d6 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java @@ -623,11 +623,10 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager _deleteId = "delete from "+_sessionIdTable+" where id = ?"; _queryId = "select * from "+_sessionIdTable+" where id = ?"; - Connection connection = null; - try + try (Connection connection = getConnection(); + Statement statement = connection.createStatement()) { //make the id table - connection = getConnection(); connection.setAutoCommit(true); DatabaseMetaData metaData = connection.getMetaData(); _dbAdaptor = new DatabaseAdaptor(metaData); @@ -635,80 +634,86 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager //checking for table existence is case-sensitive, but table creation is not String tableName = _dbAdaptor.convertIdentifier(_sessionIdTable); - ResultSet result = metaData.getTables(null, null, tableName, null); - if (!result.next()) + try (ResultSet result = metaData.getTables(null, null, tableName, null)) { - //table does not exist, so create it - connection.createStatement().executeUpdate(_createSessionIdTable); + if (!result.next()) + { + //table does not exist, so create it + statement.executeUpdate(_createSessionIdTable); + } } - //make the session table if necessary tableName = _dbAdaptor.convertIdentifier(_sessionTable); - result = metaData.getTables(null, null, tableName, null); - if (!result.next()) + try (ResultSet result = metaData.getTables(null, null, tableName, null)) { - //table does not exist, so create it - String blobType = _dbAdaptor.getBlobType(); - String longType = _dbAdaptor.getLongType(); - _createSessionTable = "create table "+_sessionTable+" ("+_sessionTableRowId+" varchar(120), sessionId varchar(120), "+ - " contextPath varchar(60), virtualHost varchar(60), lastNode varchar(60), accessTime "+longType+", "+ - " lastAccessTime "+longType+", createTime "+longType+", cookieTime "+longType+", "+ - " lastSavedTime "+longType+", expiryTime "+longType+", maxInterval "+longType+", map "+blobType+", primary key("+_sessionTableRowId+"))"; - connection.createStatement().executeUpdate(_createSessionTable); - } - else - { - //session table exists, check it has maxinterval column - ResultSet colResult = null; - try - { - colResult = metaData.getColumns(null, null,_dbAdaptor.convertIdentifier(_sessionTable), _dbAdaptor.convertIdentifier("maxInterval")); - } - catch (SQLException s) + if (!result.next()) { - LOG.warn("Problem checking if "+_sessionTable+" table contains maxInterval column. Ensure table contains column definition: \"maxInterval long not null default -999\""); - throw s; + //table does not exist, so create it + String blobType = _dbAdaptor.getBlobType(); + String longType = _dbAdaptor.getLongType(); + _createSessionTable = "create table "+_sessionTable+" ("+_sessionTableRowId+" varchar(120), sessionId varchar(120), "+ + " contextPath varchar(60), virtualHost varchar(60), lastNode varchar(60), accessTime "+longType+", "+ + " lastAccessTime "+longType+", createTime "+longType+", cookieTime "+longType+", "+ + " lastSavedTime "+longType+", expiryTime "+longType+", maxInterval "+longType+", map "+blobType+", primary key("+_sessionTableRowId+"))"; + statement.executeUpdate(_createSessionTable); } - - if (!colResult.next()) + else { + //session table exists, check it has maxinterval column + ResultSet colResult = null; try { - //add the maxinterval column - String longType = _dbAdaptor.getLongType(); - connection.createStatement().executeUpdate("alter table "+_sessionTable+" add maxInterval "+longType+" not null default "+MAX_INTERVAL_NOT_SET); + colResult = metaData.getColumns(null, null,_dbAdaptor.convertIdentifier(_sessionTable), _dbAdaptor.convertIdentifier("maxInterval")); } catch (SQLException s) { - LOG.warn("Problem adding maxInterval column. Ensure table contains column definition: \"maxInterval long not null default -999\""); + LOG.warn("Problem checking if "+_sessionTable+" table contains maxInterval column. Ensure table contains column definition: \"maxInterval long not null default -999\""); throw s; } - } + try + { + if (!colResult.next()) + { + try + { + //add the maxinterval column + String longType = _dbAdaptor.getLongType(); + statement.executeUpdate("alter table "+_sessionTable+" add maxInterval "+longType+" not null default "+MAX_INTERVAL_NOT_SET); + } + catch (SQLException s) + { + LOG.warn("Problem adding maxInterval column. Ensure table contains column definition: \"maxInterval long not null default -999\""); + throw s; + } + } + } + finally + { + colResult.close(); + } + } } - //make some indexes on the JettySessions table String index1 = "idx_"+_sessionTable+"_expiry"; String index2 = "idx_"+_sessionTable+"_session"; - result = metaData.getIndexInfo(null, null, tableName, false, false); boolean index1Exists = false; boolean index2Exists = false; - while (result.next()) + try (ResultSet result = metaData.getIndexInfo(null, null, tableName, false, false)) { - String idxName = result.getString("INDEX_NAME"); - if (index1.equalsIgnoreCase(idxName)) - index1Exists = true; - else if (index2.equalsIgnoreCase(idxName)) - index2Exists = true; - } - if (!(index1Exists && index2Exists)) - { - Statement statement = connection.createStatement(); - if (!index1Exists) - statement.executeUpdate("create index "+index1+" on "+_sessionTable+" (expiryTime)"); - if (!index2Exists) - statement.executeUpdate("create index "+index2+" on "+_sessionTable+" (sessionId, contextPath)"); + while (result.next()) + { + String idxName = result.getString("INDEX_NAME"); + if (index1.equalsIgnoreCase(idxName)) + index1Exists = true; + else if (index2.equalsIgnoreCase(idxName)) + index2Exists = true; + } } + if (!index1Exists) + statement.executeUpdate("create index "+index1+" on "+_sessionTable+" (expiryTime)"); + if (!index2Exists) + statement.executeUpdate("create index "+index2+" on "+_sessionTable+" (sessionId, contextPath)"); //set up some strings representing the statements for session manipulation _insertSession = "insert into "+_sessionTable+ @@ -729,11 +734,6 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager } - finally - { - if (connection != null) - connection.close(); - } } /** @@ -745,27 +745,24 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager private void insert (String id) throws SQLException { - Connection connection = null; - try + try (Connection connection = getConnection(); + PreparedStatement query = connection.prepareStatement(_queryId)) { - connection = getConnection(); connection.setAutoCommit(true); - PreparedStatement query = connection.prepareStatement(_queryId); query.setString(1, id); - ResultSet result = query.executeQuery(); - //only insert the id if it isn't in the db already - if (!result.next()) + try (ResultSet result = query.executeQuery()) { - PreparedStatement statement = connection.prepareStatement(_insertId); - statement.setString(1, id); - statement.executeUpdate(); + //only insert the id if it isn't in the db already + if (!result.next()) + { + try (PreparedStatement statement = connection.prepareStatement(_insertId)) + { + statement.setString(1, id); + statement.executeUpdate(); + } + } } } - finally - { - if (connection != null) - connection.close(); - } } /** @@ -777,20 +774,13 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager private void delete (String id) throws SQLException { - Connection connection = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_deleteId)) { - connection = getConnection(); connection.setAutoCommit(true); - PreparedStatement statement = connection.prepareStatement(_deleteId); statement.setString(1, id); statement.executeUpdate(); } - finally - { - if (connection != null) - connection.close(); - } } @@ -804,20 +794,15 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager private boolean exists (String id) throws SQLException { - Connection connection = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_queryId)) { - connection = getConnection(); connection.setAutoCommit(true); - PreparedStatement statement = connection.prepareStatement(_queryId); statement.setString(1, id); - ResultSet result = statement.executeQuery(); - return result.next(); - } - finally - { - if (connection != null) - connection.close(); + try (ResultSet result = statement.executeQuery()) + { + return result.next(); + } } } @@ -835,7 +820,6 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager private void scavenge () { Connection connection = null; - Set<String> expiredSessionIds = new HashSet<String>(); try { if (LOG.isDebugEnabled()) @@ -844,70 +828,78 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager { connection = getConnection(); connection.setAutoCommit(true); + Set<String> expiredSessionIds = new HashSet<String>(); //Pass 1: find sessions for which we were last managing node that have just expired since last pass - PreparedStatement statement = connection.prepareStatement(_selectBoundedExpiredSessions); long lowerBound = (_lastScavengeTime - _scavengeIntervalMs); long upperBound = _lastScavengeTime; if (LOG.isDebugEnabled()) LOG.debug (getWorkerName()+"- Pass 1: Searching for sessions expired between "+lowerBound + " and "+upperBound); - statement.setString(1, getWorkerName()); - statement.setLong(2, lowerBound); - statement.setLong(3, upperBound); - ResultSet result = statement.executeQuery(); - while (result.next()) + try (PreparedStatement statement = connection.prepareStatement(_selectBoundedExpiredSessions)) { - String sessionId = result.getString("sessionId"); - expiredSessionIds.add(sessionId); - if (LOG.isDebugEnabled()) LOG.debug ("Found expired sessionId="+sessionId); + statement.setString(1, getWorkerName()); + statement.setLong(2, lowerBound); + statement.setLong(3, upperBound); + try (ResultSet result = statement.executeQuery()) + { + while (result.next()) + { + String sessionId = result.getString("sessionId"); + expiredSessionIds.add(sessionId); + if (LOG.isDebugEnabled()) LOG.debug ("Found expired sessionId="+sessionId); + } + } } - result.close(); scavengeSessions(expiredSessionIds, false); - + //Pass 2: find sessions that have expired a while ago for which this node was their last manager - PreparedStatement selectExpiredSessions = connection.prepareStatement(_selectExpiredSessions); - expiredSessionIds.clear(); - upperBound = _lastScavengeTime - (2 * _scavengeIntervalMs); - if (upperBound > 0) - { - if (LOG.isDebugEnabled()) LOG.debug(getWorkerName()+"- Pass 2: Searching for sessions expired before "+upperBound); - selectExpiredSessions.setLong(1, upperBound); - result = selectExpiredSessions.executeQuery(); - while (result.next()) + try (PreparedStatement selectExpiredSessions = connection.prepareStatement(_selectExpiredSessions)) + { + expiredSessionIds.clear(); + upperBound = _lastScavengeTime - (2 * _scavengeIntervalMs); + if (upperBound > 0) { - String sessionId = result.getString("sessionId"); - String lastNode = result.getString("lastNode"); - if ((getWorkerName() == null && lastNode == null) || (getWorkerName() != null && getWorkerName().equals(lastNode))) - expiredSessionIds.add(sessionId); - if (LOG.isDebugEnabled()) LOG.debug ("Found expired sessionId="+sessionId+" last managed by "+getWorkerName()); + if (LOG.isDebugEnabled()) LOG.debug(getWorkerName()+"- Pass 2: Searching for sessions expired before "+upperBound); + selectExpiredSessions.setLong(1, upperBound); + try (ResultSet result = selectExpiredSessions.executeQuery()) + { + while (result.next()) + { + String sessionId = result.getString("sessionId"); + String lastNode = result.getString("lastNode"); + if ((getWorkerName() == null && lastNode == null) || (getWorkerName() != null && getWorkerName().equals(lastNode))) + expiredSessionIds.add(sessionId); + if (LOG.isDebugEnabled()) LOG.debug ("Found expired sessionId="+sessionId+" last managed by "+getWorkerName()); + } + } + scavengeSessions(expiredSessionIds, false); } - result.close(); - scavengeSessions(expiredSessionIds, false); - } - //Pass 3: - //find all sessions that have expired at least a couple of scanIntervals ago - //if we did not succeed in loading them (eg their related context no longer exists, can't be loaded etc) then - //they are simply deleted - upperBound = _lastScavengeTime - (3 * _scavengeIntervalMs); - expiredSessionIds.clear(); - if (upperBound > 0) - { - if (LOG.isDebugEnabled()) LOG.debug(getWorkerName()+"- Pass 3: searching for sessions expired before "+upperBound); - selectExpiredSessions.setLong(1, upperBound); - result = selectExpiredSessions.executeQuery(); - while (result.next()) + //Pass 3: + //find all sessions that have expired at least a couple of scanIntervals ago + //if we did not succeed in loading them (eg their related context no longer exists, can't be loaded etc) then + //they are simply deleted + upperBound = _lastScavengeTime - (3 * _scavengeIntervalMs); + expiredSessionIds.clear(); + if (upperBound > 0) { - String sessionId = result.getString("sessionId"); - expiredSessionIds.add(sessionId); - if (LOG.isDebugEnabled()) LOG.debug ("Found expired sessionId="+sessionId); - } - result.close(); - scavengeSessions(expiredSessionIds, true); + if (LOG.isDebugEnabled()) LOG.debug(getWorkerName()+"- Pass 3: searching for sessions expired before "+upperBound); + selectExpiredSessions.setLong(1, upperBound); + try (ResultSet result = selectExpiredSessions.executeQuery()) + { + while (result.next()) + { + String sessionId = result.getString("sessionId"); + expiredSessionIds.add(sessionId); + if (LOG.isDebugEnabled()) LOG.debug ("Found expired sessionId="+sessionId); + } + } + scavengeSessions(expiredSessionIds, true); + } } } } @@ -990,10 +982,8 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager return; String[] ids = expiredIds.toArray(new String[expiredIds.size()]); - Connection con = null; - try + try (Connection con = getConnection()) { - con = getConnection(); con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); con.setAutoCommit(false); @@ -1002,38 +992,29 @@ public class JDBCSessionIdManager extends AbstractSessionIdManager int blocksize = _deleteBlockSize; int block = 0; - while (end < ids.length) + try (Statement statement = con.createStatement()) { - start = block*blocksize; - if ((ids.length - start) >= blocksize) - end = start + blocksize; - else - end = ids.length; - - Statement statement = con.createStatement(); - //take them out of the sessionIds table - statement.executeUpdate(fillInClause("delete from "+_sessionIdTable+" where id in ", ids, start, end)); - //take them out of the sessions table - statement.executeUpdate(fillInClause("delete from "+_sessionTable+" where sessionId in ", ids, start, end)); - block++; + while (end < ids.length) + { + start = block*blocksize; + if ((ids.length - start) >= blocksize) + end = start + blocksize; + else + end = ids.length; + + //take them out of the sessionIds table + statement.executeUpdate(fillInClause("delete from "+_sessionIdTable+" where id in ", ids, start, end)); + //take them out of the sessions table + statement.executeUpdate(fillInClause("delete from "+_sessionTable+" where sessionId in ", ids, start, end)); + block++; + } } - con.commit(); - - } - catch (Exception e) - { - if (con != null) + catch (Exception e) { con.rollback(); throw e; } - } - finally - { - if (con != null) - { - con.close(); - } + con.commit(); } } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionManager.java index bf595d15bb..99314557ee 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionManager.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionManager.java @@ -874,14 +874,11 @@ public class JDBCSessionManager extends AbstractSessionManager @SuppressWarnings("unchecked") public void run() { - Session session = null; - Connection connection=null; - PreparedStatement statement = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = _jdbcSessionIdMgr._dbAdaptor.getLoadStatement(connection, id, canonicalContextPath, vhost); + ResultSet result = statement.executeQuery()) { - connection = getConnection(); - statement = _jdbcSessionIdMgr._dbAdaptor.getLoadStatement(connection, id, canonicalContextPath, vhost); - ResultSet result = statement.executeQuery(); + Session session = null; if (result.next()) { long maxInterval = result.getLong("maxInterval"); @@ -901,11 +898,12 @@ public class JDBCSessionManager extends AbstractSessionManager session.setCanonicalContext(result.getString("contextPath")); session.setVirtualHost(result.getString("virtualHost")); - InputStream is = ((JDBCSessionIdManager)getSessionIdManager())._dbAdaptor.getBlobInputStream(result, "map"); - ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream (is); - Object o = ois.readObject(); - session.addAttributes((Map<String,Object>)o); - ois.close(); + try (InputStream is = ((JDBCSessionIdManager)getSessionIdManager())._dbAdaptor.getBlobInputStream(result, "map"); + ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(is)) + { + Object o = ois.readObject(); + session.addAttributes((Map<String,Object>)o); + } if (LOG.isDebugEnabled()) LOG.debug("LOADED session "+session); @@ -919,14 +917,6 @@ public class JDBCSessionManager extends AbstractSessionManager { _exception.set(e); } - finally - { - if (connection!=null) - { - try { connection.close();} - catch(Exception e) { LOG.warn(e); } - } - } } }; @@ -959,15 +949,13 @@ public class JDBCSessionManager extends AbstractSessionManager return; //put into the database - Connection connection = getConnection(); - PreparedStatement statement = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_jdbcSessionIdMgr._insertSession)) { String rowId = calculateRowId(session); long now = System.currentTimeMillis(); connection.setAutoCommit(true); - statement = connection.prepareStatement(_jdbcSessionIdMgr._insertSession); statement.setString(1, rowId); //rowId statement.setString(2, session.getId()); //session id statement.setString(3, session.getCanonicalContext()); //context path @@ -984,6 +972,7 @@ public class JDBCSessionManager extends AbstractSessionManager ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(session.getAttributeMap()); + oos.flush(); byte[] bytes = baos.toByteArray(); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); @@ -993,16 +982,9 @@ public class JDBCSessionManager extends AbstractSessionManager statement.executeUpdate(); session.setRowId(rowId); //set it on the in-memory data as well as in db session.setLastSaved(now); - - - if (LOG.isDebugEnabled()) - LOG.debug("Stored session "+session); - } - finally - { - if (connection!=null) - connection.close(); } + if (LOG.isDebugEnabled()) + LOG.debug("Stored session "+session); } @@ -1018,13 +1000,11 @@ public class JDBCSessionManager extends AbstractSessionManager if (data==null) return; - Connection connection = getConnection(); - PreparedStatement statement = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_jdbcSessionIdMgr._updateSession)) { long now = System.currentTimeMillis(); connection.setAutoCommit(true); - statement = connection.prepareStatement(_jdbcSessionIdMgr._updateSession); statement.setString(1, data.getId()); statement.setString(2, getSessionIdManager().getWorkerName());//my node id statement.setLong(3, data.getAccessed());//accessTime @@ -1036,6 +1016,7 @@ public class JDBCSessionManager extends AbstractSessionManager ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(data.getAttributeMap()); + oos.flush(); byte[] bytes = baos.toByteArray(); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); @@ -1044,14 +1025,9 @@ public class JDBCSessionManager extends AbstractSessionManager statement.executeUpdate(); data.setLastSaved(now); - if (LOG.isDebugEnabled()) - LOG.debug("Updated session "+data); - } - finally - { - if (connection!=null) - connection.close(); } + if (LOG.isDebugEnabled()) + LOG.debug("Updated session "+data); } @@ -1065,24 +1041,16 @@ public class JDBCSessionManager extends AbstractSessionManager throws Exception { String nodeId = getSessionIdManager().getWorkerName(); - Connection connection = getConnection(); - PreparedStatement statement = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_jdbcSessionIdMgr._updateSessionNode)) { connection.setAutoCommit(true); - statement = connection.prepareStatement(_jdbcSessionIdMgr._updateSessionNode); statement.setString(1, nodeId); statement.setString(2, data.getRowId()); statement.executeUpdate(); - statement.close(); - if (LOG.isDebugEnabled()) - LOG.debug("Updated last node for session id="+data.getId()+", lastNode = "+nodeId); - } - finally - { - if (connection!=null) - connection.close(); } + if (LOG.isDebugEnabled()) + LOG.debug("Updated last node for session id="+data.getId()+", lastNode = "+nodeId); } /** @@ -1094,13 +1062,11 @@ public class JDBCSessionManager extends AbstractSessionManager private void updateSessionAccessTime (Session data) throws Exception { - Connection connection = getConnection(); - PreparedStatement statement = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_jdbcSessionIdMgr._updateSessionAccessTime)) { long now = System.currentTimeMillis(); connection.setAutoCommit(true); - statement = connection.prepareStatement(_jdbcSessionIdMgr._updateSessionAccessTime); statement.setString(1, getSessionIdManager().getWorkerName()); statement.setLong(2, data.getAccessed()); statement.setLong(3, data.getLastAccessedTime()); @@ -1111,15 +1077,9 @@ public class JDBCSessionManager extends AbstractSessionManager statement.executeUpdate(); data.setLastSaved(now); - statement.close(); - if (LOG.isDebugEnabled()) - LOG.debug("Updated access time session id="+data.getId()); - } - finally - { - if (connection!=null) - connection.close(); } + if (LOG.isDebugEnabled()) + LOG.debug("Updated access time session id="+data.getId()); } @@ -1135,22 +1095,15 @@ public class JDBCSessionManager extends AbstractSessionManager protected void deleteSession (Session data) throws Exception { - Connection connection = getConnection(); - PreparedStatement statement = null; - try + try (Connection connection = getConnection(); + PreparedStatement statement = connection.prepareStatement(_jdbcSessionIdMgr._deleteSession)) { connection.setAutoCommit(true); - statement = connection.prepareStatement(_jdbcSessionIdMgr._deleteSession); statement.setString(1, data.getRowId()); statement.executeUpdate(); if (LOG.isDebugEnabled()) LOG.debug("Deleted Session "+data); } - finally - { - if (connection!=null) - connection.close(); - } } diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java b/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java index 27440fa815..0f86e01f5e 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java @@ -117,7 +117,7 @@ public class DumpHandler extends AbstractHandler Enumeration<String> names=request.getParameterNames(); while(names.hasMoreElements()) { - String name=names.nextElement().toString(); + String name=names.nextElement(); String[] values=request.getParameterValues(name); if (values==null || values.length==0) { diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java index e2d94bfbbf..a731c42114 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java @@ -988,10 +988,12 @@ public class RequestTest if (evil_keys.exists()) { LOG.info("Using real evil keys!"); - BufferedReader in = new BufferedReader(new FileReader(evil_keys)); - String key=null; - while((key=in.readLine())!=null) - buf.append("&").append(key).append("=").append("x"); + try (BufferedReader in = new BufferedReader(new FileReader(evil_keys))) + { + String key=null; + while((key=in.readLine())!=null) + buf.append("&").append(key).append("=").append("x"); + } } else { diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ResourceCacheTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ResourceCacheTest.java index 09ebcf4aca..3383b596b5 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ResourceCacheTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ResourceCacheTest.java @@ -25,6 +25,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import org.eclipse.jetty.http.HttpContent; import org.eclipse.jetty.http.MimeTypes; @@ -117,11 +118,12 @@ public class ResourceCacheTest files[i]=File.createTempFile("R-"+i+"-",".txt"); files[i].deleteOnExit(); names[i]=files[i].getName(); - FileOutputStream out = new FileOutputStream(files[i]); - for (int j=0;j<(i*10-1);j++) - out.write(' '); - out.write('\n'); - out.close(); + try (OutputStream out = new FileOutputStream(files[i])) + { + for (int j=0;j<(i*10-1);j++) + out.write(' '); + out.write('\n'); + } } directory=Resource.newResource(files[0].getParentFile().getAbsolutePath()); @@ -182,9 +184,10 @@ public class ResourceCacheTest Thread.sleep(200); - FileOutputStream out = new FileOutputStream(files[6]); - out.write(' '); - out.close(); + try (OutputStream out = new FileOutputStream(files[6])) + { + out.write(' '); + } content=cache.lookup(names[7]); assertEquals(70,cache.getCachedSize()); assertEquals(1,cache.getCachedFiles()); @@ -250,10 +253,11 @@ public class ResourceCacheTest { StringBuilder buffer = new StringBuilder(); String line = null; - BufferedReader br = new BufferedReader(new InputStreamReader(r.addPath(path).getURL().openStream())); - while((line=br.readLine())!=null) - buffer.append(line); - br.close(); + try (BufferedReader br = new BufferedReader(new InputStreamReader(r.addPath(path).getURL().openStream()))) + { + while((line=br.readLine())!=null) + buffer.append(line); + } return buffer.toString(); } diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java index 1a63f0a6c5..8e65b66141 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java @@ -21,6 +21,8 @@ package org.eclipse.jetty.server.handler; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; import java.net.Socket; import java.net.URI; @@ -58,11 +60,14 @@ public class ResourceHandlerTest File dir = MavenTestingUtils.getTargetFile("test-classes/simple"); File huge = new File(dir,"huge.txt"); File big=new File(dir,"big.txt"); - FileOutputStream out = new FileOutputStream(huge); - for (int i=0;i<100;i++) - { - FileInputStream in=new FileInputStream(big); - IO.copy(in,out); + try (OutputStream out = new FileOutputStream(huge)) { + for (int i=0;i<100;i++) + { + try (InputStream in=new FileInputStream(big)) + { + IO.copy(in,out); + } + } } huge.deleteOnExit(); diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java index e160c45cbd..322f274e00 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java @@ -75,7 +75,10 @@ public class SSLSelectChannelConnectorLoadTest server.start(); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); - keystore.load(new FileInputStream(keystorePath), "storepwd".toCharArray()); + try (InputStream stream = new FileInputStream(keystorePath)) + { + keystore.load(stream, "storepwd".toCharArray()); + } TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keystore); sslContext = SSLContext.getInstance("SSL"); diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java index 94b8bcfb4f..6c37535b86 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java @@ -21,6 +21,7 @@ package org.eclipse.jetty.server.ssl; import static org.junit.Assert.assertEquals; import java.io.FileInputStream; +import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.SocketException; @@ -111,7 +112,10 @@ public class SelectChannelServerSslTest extends HttpServerTestBase startServer(connector); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); - keystore.load(new FileInputStream(sslContextFactory.getKeyStorePath()), "storepwd".toCharArray()); + try (InputStream stream = new FileInputStream(sslContextFactory.getKeyStorePath())) + { + keystore.load(stream, "storepwd".toCharArray()); + } TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keystore); __sslContext = SSLContext.getInstance("TLS"); diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSelectChannelTimeoutTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSelectChannelTimeoutTest.java index 6d1551b6ed..7e40aecee0 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSelectChannelTimeoutTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSelectChannelTimeoutTest.java @@ -19,6 +19,7 @@ package org.eclipse.jetty.server.ssl; import java.io.FileInputStream; +import java.io.InputStream; import java.net.Socket; import java.security.KeyStore; @@ -55,7 +56,10 @@ public class SslSelectChannelTimeoutTest extends ConnectorTimeoutTest startServer(connector); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); - keystore.load(new FileInputStream(keystorePath), "storepwd".toCharArray()); + try (InputStream stream = new FileInputStream(keystorePath)) + { + keystore.load(stream, "storepwd".toCharArray()); + } TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keystore); __sslContext = SSLContext.getInstance("SSL"); diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java index fbda4c5905..d4ef124138 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java @@ -88,7 +88,10 @@ public class SslUploadTest { KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); SslContextFactory ctx=connector.getConnectionFactory(SslConnectionFactory.class).getSslContextFactory(); - keystore.load(new FileInputStream(ctx.getKeyStorePath()), "storepwd".toCharArray()); + try (InputStream stream = new FileInputStream(ctx.getKeyStorePath())) + { + keystore.load(stream, "storepwd".toCharArray()); + } TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keystore); SSLContext sslContext = SSLContext.getInstance("SSL"); |