You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/03/26 14:09:39 UTC
svn commit: r1581820 - in /tomcat/trunk: ./ java/org/apache/catalina/session/
Author: markt
Date: Wed Mar 26 13:09:39 2014
New Revision: 1581820
URL: http://svn.apache.org/r1581820
Log:
More try-with-resources
Modified:
tomcat/trunk/TOMCAT-NEXT.txt
tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties
tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties
tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties
tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties
tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
Modified: tomcat/trunk/TOMCAT-NEXT.txt
URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/TOMCAT-NEXT.txt (original)
+++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 13:09:39 2014
@@ -214,7 +214,7 @@ but possibly 7.1.x).
- Use of try with resources
- Started.
- javax.* complete
- - o.a.catalina.[ant to servlets] complete
+ - o.a.catalina.[ant to session] complete
- remainder TODO
- Catching multiple exceptions
- Started
Modified: tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java Wed Mar 26 13:09:39 2014
@@ -468,7 +468,6 @@ public class JDBCStore extends StoreBase
*/
@Override
public String[] keys() throws IOException {
- ResultSet rst = null;
String keys[] = null;
synchronized (this) {
int numberOfTries = 2;
@@ -487,16 +486,17 @@ public class JDBCStore extends StoreBase
}
preparedKeysSql.setString(1, getName());
- rst = preparedKeysSql.executeQuery();
- ArrayList<String> tmpkeys = new ArrayList<>();
- if (rst != null) {
- while (rst.next()) {
- tmpkeys.add(rst.getString(1));
+ try (ResultSet rst = preparedKeysSql.executeQuery()) {
+ ArrayList<String> tmpkeys = new ArrayList<>();
+ if (rst != null) {
+ while (rst.next()) {
+ tmpkeys.add(rst.getString(1));
+ }
}
+ keys = tmpkeys.toArray(new String[tmpkeys.size()]);
+ // Break out after the finally block
+ numberOfTries = 0;
}
- keys = tmpkeys.toArray(new String[tmpkeys.size()]);
- // Break out after the finally block
- numberOfTries = 0;
} catch (SQLException e) {
manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e));
keys = new String[0];
@@ -504,21 +504,12 @@ public class JDBCStore extends StoreBase
if (dbConnection != null)
close(dbConnection);
} finally {
- try {
- if (rst != null) {
- rst.close();
- }
- } catch (SQLException e) {
- // Ignore
- }
-
release(_conn);
}
numberOfTries--;
}
}
-
- return (keys);
+ return keys;
}
/**
@@ -531,7 +522,6 @@ public class JDBCStore extends StoreBase
@Override
public int getSize() throws IOException {
int size = 0;
- ResultSet rst = null;
synchronized (this) {
int numberOfTries = 2;
@@ -551,30 +541,24 @@ public class JDBCStore extends StoreBase
}
preparedSizeSql.setString(1, getName());
- rst = preparedSizeSql.executeQuery();
- if (rst.next()) {
- size = rst.getInt(1);
+ try (ResultSet rst = preparedSizeSql.executeQuery()) {
+ if (rst.next()) {
+ size = rst.getInt(1);
+ }
+ // Break out after the finally block
+ numberOfTries = 0;
}
- // Break out after the finally block
- numberOfTries = 0;
} catch (SQLException e) {
manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e));
if (dbConnection != null)
close(dbConnection);
} finally {
- try {
- if (rst != null)
- rst.close();
- } catch (SQLException e) {
- // Ignore
- }
-
release(_conn);
}
numberOfTries--;
}
}
- return (size);
+ return size;
}
/**
@@ -587,9 +571,7 @@ public class JDBCStore extends StoreBase
* @exception IOException if an input/output error occurred
*/
@Override
- public Session load(String id)
- throws ClassNotFoundException, IOException {
- ResultSet rst = null;
+ public Session load(String id) throws ClassNotFoundException, IOException {
StandardSession _session = null;
Loader loader = null;
ClassLoader classLoader = null;
@@ -617,49 +599,43 @@ public class JDBCStore extends StoreBase
preparedLoadSql.setString(1, id);
preparedLoadSql.setString(2, getName());
- rst = preparedLoadSql.executeQuery();
- if (rst.next()) {
- bis = new BufferedInputStream(rst.getBinaryStream(2));
-
- if (context != null) {
- loader = context.getLoader();
- }
- if (loader != null) {
- classLoader = loader.getClassLoader();
- }
- if (classLoader != null) {
- Thread.currentThread().setContextClassLoader(classLoader);
- ois = new CustomObjectInputStream(bis,
- classLoader);
- } else {
- ois = new ObjectInputStream(bis);
- }
-
- if (manager.getContext().getLogger().isDebugEnabled()) {
- manager.getContext().getLogger().debug(sm.getString(getStoreName() + ".loading",
- id, sessionTable));
+ try (ResultSet rst = preparedLoadSql.executeQuery()) {
+ if (rst.next()) {
+ bis = new BufferedInputStream(rst.getBinaryStream(2));
+
+ if (context != null) {
+ loader = context.getLoader();
+ }
+ if (loader != null) {
+ classLoader = loader.getClassLoader();
+ }
+ if (classLoader != null) {
+ Thread.currentThread().setContextClassLoader(classLoader);
+ ois = new CustomObjectInputStream(bis,
+ classLoader);
+ } else {
+ ois = new ObjectInputStream(bis);
+ }
+
+ if (manager.getContext().getLogger().isDebugEnabled()) {
+ manager.getContext().getLogger().debug(sm.getString(getStoreName() + ".loading",
+ id, sessionTable));
+ }
+
+ _session = (StandardSession) manager.createEmptySession();
+ _session.readObjectData(ois);
+ _session.setManager(manager);
+ } else if (manager.getContext().getLogger().isDebugEnabled()) {
+ manager.getContext().getLogger().debug(getStoreName() + ": No persisted data object found");
}
-
- _session = (StandardSession) manager.createEmptySession();
- _session.readObjectData(ois);
- _session.setManager(manager);
- } else if (manager.getContext().getLogger().isDebugEnabled()) {
- manager.getContext().getLogger().debug(getStoreName() + ": No persisted data object found");
+ // Break out after the finally block
+ numberOfTries = 0;
}
- // Break out after the finally block
- numberOfTries = 0;
} catch (SQLException e) {
manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e));
if (dbConnection != null)
close(dbConnection);
} finally {
- try {
- if (rst != null) {
- rst.close();
- }
- } catch (SQLException e) {
- // Ignore
- }
if (ois != null) {
try {
ois.close();
@@ -787,10 +763,7 @@ public class JDBCStore extends StoreBase
*/
@Override
public void save(Session session) throws IOException {
- ObjectOutputStream oos = null;
ByteArrayOutputStream bos = null;
- ByteArrayInputStream bis = null;
- InputStream in = null;
synchronized (this) {
int numberOfTries = 2;
@@ -807,35 +780,34 @@ public class JDBCStore extends StoreBase
remove(session.getIdInternal(), _conn);
bos = new ByteArrayOutputStream();
- oos = new ObjectOutputStream(new BufferedOutputStream(bos));
-
- ((StandardSession) session).writeObjectData(oos);
- oos.close();
- oos = null;
+ try (ObjectOutputStream oos =
+ new ObjectOutputStream(new BufferedOutputStream(bos))) {
+ ((StandardSession) session).writeObjectData(oos);
+ }
byte[] obs = bos.toByteArray();
int size = obs.length;
- bis = new ByteArrayInputStream(obs, 0, size);
- in = new BufferedInputStream(bis, size);
+ try (ByteArrayInputStream bis = new ByteArrayInputStream(obs, 0, size);
+ InputStream in = new BufferedInputStream(bis, size)) {
+ if (preparedSaveSql == null) {
+ String saveSql = "INSERT INTO " + sessionTable + " ("
+ + sessionIdCol + ", " + sessionAppCol + ", "
+ + sessionDataCol + ", " + sessionValidCol
+ + ", " + sessionMaxInactiveCol + ", "
+ + sessionLastAccessedCol
+ + ") VALUES (?, ?, ?, ?, ?, ?)";
+ preparedSaveSql = _conn.prepareStatement(saveSql);
+ }
- if (preparedSaveSql == null) {
- String saveSql = "INSERT INTO " + sessionTable + " ("
- + sessionIdCol + ", " + sessionAppCol + ", "
- + sessionDataCol + ", " + sessionValidCol
- + ", " + sessionMaxInactiveCol + ", "
- + sessionLastAccessedCol
- + ") VALUES (?, ?, ?, ?, ?, ?)";
- preparedSaveSql = _conn.prepareStatement(saveSql);
+ preparedSaveSql.setString(1, session.getIdInternal());
+ preparedSaveSql.setString(2, getName());
+ preparedSaveSql.setBinaryStream(3, in, size);
+ preparedSaveSql.setString(4, session.isValid() ? "1" : "0");
+ preparedSaveSql.setInt(5, session.getMaxInactiveInterval());
+ preparedSaveSql.setLong(6, session.getLastAccessedTime());
+ preparedSaveSql.execute();
+ // Break out after the finally block
+ numberOfTries = 0;
}
-
- preparedSaveSql.setString(1, session.getIdInternal());
- preparedSaveSql.setString(2, getName());
- preparedSaveSql.setBinaryStream(3, in, size);
- preparedSaveSql.setString(4, session.isValid() ? "1" : "0");
- preparedSaveSql.setInt(5, session.getMaxInactiveInterval());
- preparedSaveSql.setLong(6, session.getLastAccessedTime());
- preparedSaveSql.execute();
- // Break out after the finally block
- numberOfTries = 0;
} catch (SQLException e) {
manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e));
if (dbConnection != null)
@@ -843,16 +815,6 @@ public class JDBCStore extends StoreBase
} catch (IOException e) {
// Ignore
} finally {
- if (oos != null) {
- oos.close();
- }
- if (bis != null) {
- bis.close();
- }
- if (in != null) {
- in.close();
- }
-
release(_conn);
}
numberOfTries--;
Modified: tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties Wed Mar 26 13:09:39 2014
@@ -34,8 +34,7 @@ managerBase.container.noop=Managers adde
managerBase.createSession.ise=createSession: Too many active sessions
managerBase.sessionTimeout=Invalid session timeout setting {0}
standardManager.loading=Loading persisted sessions from {0}
-standardManager.loading.cnfe=ClassNotFoundException while loading persisted sessions: {0}
-standardManager.loading.ioe=IOException while loading persisted sessions: {0}
+standardManager.loading.exception=Exception while loading persisted sessions
standardManager.unloading=Saving persisted sessions to {0}
standardManager.unloading.debug=Unloading persisted sessions
standardManager.unloading.ioe=IOException while saving persisted sessions: {0}
Modified: tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties Wed Mar 26 13:09:39 2014
@@ -27,8 +27,7 @@ JDBCStore.checkConnectionClassNotFoundEx
managerBase.createSession.ise = createSession\: Demasiadas sesiones activas
managerBase.sessionTimeout = Valor inv\u00E1lido de Tiempo Agotado de sesi\u00F3n {0}
standardManager.loading = Cargando sesiones persistidas desde {0}
-standardManager.loading.cnfe = ClassNotFoundException al cargar sesiones persistidas\: {0}
-standardManager.loading.ioe = IOException al cargar sesiones persistidas\: {0}
+standardManager.loading.exception = Exception al cargar sesiones persistidas
standardManager.unloading = Salvando sesiones persistidas a {0}
standardManager.unloading.ioe = IOException al salvar sesiones persistidas\: {0}
standardManager.managerLoad = Excepci\u00F3n cargando sesiones desde almacenamiento persistente
Modified: tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties Wed Mar 26 13:09:39 2014
@@ -27,8 +27,7 @@ JDBCStore.checkConnectionClassNotFoundEx
managerBase.createSession.ise="createSession": Trop de sessions actives
managerBase.sessionTimeout=R\u00e9glage du d\u00e9lai d''inactivit\u00e9 (timeout) de session invalide {0}
standardManager.loading=Chargement des sessions qui ont persist\u00e9 depuis {0}
-standardManager.loading.cnfe="ClassNotFoundException" lors du chargement de sessions persistantes: {0}
-standardManager.loading.ioe="IOException" lors du chargement de sessions persistantes: {0}
+standardManager.loading.exception="Exception" lors du chargement de sessions persistantes
standardManager.unloading=Sauvegarde des sessions ayant persist\u00e9 vers {0}
standardManager.unloading.ioe="IOException" lors de la sauvegarde de sessions persistantes: {0}
standardManager.managerLoad=Exception au chargement des sessions depuis le stockage persistant (persistent storage)
Modified: tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties Wed Mar 26 13:09:39 2014
@@ -28,8 +28,7 @@ JDBCStore.checkConnectionClassNotFoundEx
managerBase.createSession.ise=createSession: \u30a2\u30af\u30c6\u30a3\u30d6\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u591a\u3059\u304e\u307e\u3059
managerBase.sessionTimeout=\u7121\u52b9\u306a\u30bb\u30c3\u30b7\u30e7\u30f3\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3067\u3059 {0}
standardManager.loading={0} \u304b\u3089\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059
-standardManager.loading.cnfe=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306bClassNotFoundException\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}
-standardManager.loading.ioe=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306eIOException\u3067\u3059: {0}
+standardManager.loading.exception=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306bException\u304c\u767a\u751f\u3057\u307e\u3057\u305f
standardManager.unloading=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092 {0} \u306b\u4fdd\u5b58\u3057\u307e\u3059
standardManager.unloading.ioe=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u4fdd\u5b58\u4e2d\u306eIOException\u3067\u3059: {0}
standardManager.managerLoad=\u6c38\u7d9a\u8a18\u61b6\u88c5\u7f6e\u304b\u3089\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306e\u4f8b\u5916\u3067\u3059
Modified: tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardManager.java?rev=1581820&r1=1581819&r2=1581820&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/StandardManager.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/StandardManager.java Wed Mar 26 13:09:39 2014
@@ -204,14 +204,11 @@ public class StandardManager extends Man
return;
if (log.isDebugEnabled())
log.debug(sm.getString("standardManager.loading", pathname));
- FileInputStream fis = null;
- BufferedInputStream bis = null;
ObjectInputStream ois = null;
Loader loader = null;
ClassLoader classLoader = null;
- try {
- fis = new FileInputStream(file.getAbsolutePath());
- bis = new BufferedInputStream(fis);
+ try (FileInputStream fis = new FileInputStream(file.getAbsolutePath());
+ BufferedInputStream bis = new BufferedInputStream(fis)) {
Context c = getContext();
if (c != null)
loader = c.getLoader();
@@ -232,20 +229,6 @@ public class StandardManager extends Man
return;
} catch (IOException e) {
log.error(sm.getString("standardManager.loading.ioe", e), e);
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException f) {
- // Ignore
- }
- }
- if (bis != null) {
- try {
- bis.close();
- } catch (IOException f) {
- // Ignore
- }
- }
throw e;
}
@@ -270,21 +253,8 @@ public class StandardManager extends Man
}
sessionCounter++;
}
- } catch (ClassNotFoundException e) {
- log.error(sm.getString("standardManager.loading.cnfe", e), e);
- try {
- ois.close();
- } catch (IOException f) {
- // Ignore
- }
- throw e;
- } catch (IOException e) {
- log.error(sm.getString("standardManager.loading.ioe", e), e);
- try {
- ois.close();
- } catch (IOException f) {
- // Ignore
- }
+ } catch (ClassNotFoundException | IOException e) {
+ log.error(sm.getString("standardManager.loading.exception"), e);
throw e;
} finally {
// Close the input stream
@@ -339,7 +309,6 @@ public class StandardManager extends Man
*
* @exception IOException if an input/output error occurs
*/
- @SuppressWarnings("null")
protected void doUnload() throws IOException {
if (log.isDebugEnabled())
@@ -356,51 +325,16 @@ public class StandardManager extends Man
return;
if (log.isDebugEnabled())
log.debug(sm.getString("standardManager.unloading", pathname));
- FileOutputStream fos = null;
- BufferedOutputStream bos = null;
- ObjectOutputStream oos = null;
- boolean error = false;
- try {
- fos = new FileOutputStream(file.getAbsolutePath());
- bos = new BufferedOutputStream(fos);
- oos = new ObjectOutputStream(bos);
- } catch (IOException e) {
- error = true;
- log.error(sm.getString("standardManager.unloading.ioe", e), e);
- throw e;
- } finally {
- if (error) {
- if (oos != null) {
- try {
- oos.close();
- } catch (IOException ioe) {
- // Ignore
- }
- }
- if (bos != null) {
- try {
- bos.close();
- } catch (IOException ioe) {
- // Ignore
- }
- }
- if (fos != null) {
- try {
- fos.close();
- } catch (IOException ioe) {
- // Ignore
- }
- }
- }
- }
-
- // Write the number of active sessions, followed by the details
ArrayList<StandardSession> list = new ArrayList<>();
- synchronized (sessions) {
- if (log.isDebugEnabled())
- log.debug("Unloading " + sessions.size() + " sessions");
- try {
- // oos can't be null here
+ try (FileOutputStream fos = new FileOutputStream(file.getAbsolutePath());
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
+ ObjectOutputStream oos = new ObjectOutputStream(bos)) {
+
+ // Write the number of active sessions, followed by the details
+ synchronized (sessions) {
+ if (log.isDebugEnabled())
+ log.debug("Unloading " + sessions.size() + " sessions");
+
oos.writeObject(new Integer(sessions.size()));
Iterator<Session> elements = sessions.values().iterator();
while (elements.hasNext()) {
@@ -410,26 +344,10 @@ public class StandardManager extends Man
session.passivate();
session.writeObjectData(oos);
}
- } catch (IOException e) {
- log.error(sm.getString("standardManager.unloading.ioe", e), e);
- try {
- oos.close();
- } catch (IOException f) {
- // Ignore
- }
- throw e;
- }
- }
-
- // Flush and close the output stream
- try {
- oos.flush();
- } finally {
- try {
- oos.close();
- } catch (IOException f) {
- // Ignore
}
+ } catch (IOException e) {
+ log.error(sm.getString("standardManager.unloading.ioe", e), e);
+ throw e;
}
// Expire all the sessions we just wrote
@@ -449,7 +367,6 @@ public class StandardManager extends Man
if (log.isDebugEnabled())
log.debug("Unloading complete");
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r1581820 - in /tomcat/trunk: ./ java/org/apache/catalina/session/
Posted by Keiichi Fujino <kf...@apache.org>.
Sorry for the late comment for old revision.
I think that this fix causes IOE in StandardManager.doLoad().
L238 is following.
Integer count = (Integer) ois.readObject();
IOException is thrown in this call because FileInputStream and
BufferedInputStream instance have already been closed in try-with-resources
block before.
2014-03-26 22:09 GMT+09:00 <ma...@apache.org>:
> Author: markt
> Date: Wed Mar 26 13:09:39 2014
> New Revision: 1581820
>
> URL: http://svn.apache.org/r1581820
> Log:
> More try-with-resources
>
> Modified:
> tomcat/trunk/TOMCAT-NEXT.txt
> tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties
>
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties
>
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties
>
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties
> tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
>
> Modified: tomcat/trunk/TOMCAT-NEXT.txt
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> --- tomcat/trunk/TOMCAT-NEXT.txt (original)
> +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 13:09:39 2014
> @@ -214,7 +214,7 @@ but possibly 7.1.x).
> - Use of try with resources
> - Started.
> - javax.* complete
> - - o.a.catalina.[ant to servlets] complete
> + - o.a.catalina.[ant to session] complete
> - remainder TODO
> - Catching multiple exceptions
> - Started
>
> Modified: tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java Wed Mar
> 26 13:09:39 2014
> @@ -468,7 +468,6 @@ public class JDBCStore extends StoreBase
> */
> @Override
> public String[] keys() throws IOException {
> - ResultSet rst = null;
> String keys[] = null;
> synchronized (this) {
> int numberOfTries = 2;
> @@ -487,16 +486,17 @@ public class JDBCStore extends StoreBase
> }
>
> preparedKeysSql.setString(1, getName());
> - rst = preparedKeysSql.executeQuery();
> - ArrayList<String> tmpkeys = new ArrayList<>();
> - if (rst != null) {
> - while (rst.next()) {
> - tmpkeys.add(rst.getString(1));
> + try (ResultSet rst = preparedKeysSql.executeQuery()) {
> + ArrayList<String> tmpkeys = new ArrayList<>();
> + if (rst != null) {
> + while (rst.next()) {
> + tmpkeys.add(rst.getString(1));
> + }
> }
> + keys = tmpkeys.toArray(new
> String[tmpkeys.size()]);
> + // Break out after the finally block
> + numberOfTries = 0;
> }
> - keys = tmpkeys.toArray(new String[tmpkeys.size()]);
> - // Break out after the finally block
> - numberOfTries = 0;
> } catch (SQLException e) {
>
> manager.getContext().getLogger().error(sm.getString(getStoreName() +
> ".SQLException", e));
> keys = new String[0];
> @@ -504,21 +504,12 @@ public class JDBCStore extends StoreBase
> if (dbConnection != null)
> close(dbConnection);
> } finally {
> - try {
> - if (rst != null) {
> - rst.close();
> - }
> - } catch (SQLException e) {
> - // Ignore
> - }
> -
> release(_conn);
> }
> numberOfTries--;
> }
> }
> -
> - return (keys);
> + return keys;
> }
>
> /**
> @@ -531,7 +522,6 @@ public class JDBCStore extends StoreBase
> @Override
> public int getSize() throws IOException {
> int size = 0;
> - ResultSet rst = null;
>
> synchronized (this) {
> int numberOfTries = 2;
> @@ -551,30 +541,24 @@ public class JDBCStore extends StoreBase
> }
>
> preparedSizeSql.setString(1, getName());
> - rst = preparedSizeSql.executeQuery();
> - if (rst.next()) {
> - size = rst.getInt(1);
> + try (ResultSet rst = preparedSizeSql.executeQuery()) {
> + if (rst.next()) {
> + size = rst.getInt(1);
> + }
> + // Break out after the finally block
> + numberOfTries = 0;
> }
> - // Break out after the finally block
> - numberOfTries = 0;
> } catch (SQLException e) {
>
> manager.getContext().getLogger().error(sm.getString(getStoreName() +
> ".SQLException", e));
> if (dbConnection != null)
> close(dbConnection);
> } finally {
> - try {
> - if (rst != null)
> - rst.close();
> - } catch (SQLException e) {
> - // Ignore
> - }
> -
> release(_conn);
> }
> numberOfTries--;
> }
> }
> - return (size);
> + return size;
> }
>
> /**
> @@ -587,9 +571,7 @@ public class JDBCStore extends StoreBase
> * @exception IOException if an input/output error occurred
> */
> @Override
> - public Session load(String id)
> - throws ClassNotFoundException, IOException {
> - ResultSet rst = null;
> + public Session load(String id) throws ClassNotFoundException,
> IOException {
> StandardSession _session = null;
> Loader loader = null;
> ClassLoader classLoader = null;
> @@ -617,49 +599,43 @@ public class JDBCStore extends StoreBase
>
> preparedLoadSql.setString(1, id);
> preparedLoadSql.setString(2, getName());
> - rst = preparedLoadSql.executeQuery();
> - if (rst.next()) {
> - bis = new
> BufferedInputStream(rst.getBinaryStream(2));
> -
> - if (context != null) {
> - loader = context.getLoader();
> - }
> - if (loader != null) {
> - classLoader = loader.getClassLoader();
> - }
> - if (classLoader != null) {
> -
> Thread.currentThread().setContextClassLoader(classLoader);
> - ois = new CustomObjectInputStream(bis,
> - classLoader);
> - } else {
> - ois = new ObjectInputStream(bis);
> - }
> -
> - if
> (manager.getContext().getLogger().isDebugEnabled()) {
> -
> manager.getContext().getLogger().debug(sm.getString(getStoreName() +
> ".loading",
> - id, sessionTable));
> + try (ResultSet rst = preparedLoadSql.executeQuery()) {
> + if (rst.next()) {
> + bis = new
> BufferedInputStream(rst.getBinaryStream(2));
> +
> + if (context != null) {
> + loader = context.getLoader();
> + }
> + if (loader != null) {
> + classLoader = loader.getClassLoader();
> + }
> + if (classLoader != null) {
> +
> Thread.currentThread().setContextClassLoader(classLoader);
> + ois = new CustomObjectInputStream(bis,
> + classLoader);
> + } else {
> + ois = new ObjectInputStream(bis);
> + }
> +
> + if
> (manager.getContext().getLogger().isDebugEnabled()) {
> +
> manager.getContext().getLogger().debug(sm.getString(getStoreName() +
> ".loading",
> + id, sessionTable));
> + }
> +
> + _session = (StandardSession)
> manager.createEmptySession();
> + _session.readObjectData(ois);
> + _session.setManager(manager);
> + } else if
> (manager.getContext().getLogger().isDebugEnabled()) {
> +
> manager.getContext().getLogger().debug(getStoreName() + ": No persisted
> data object found");
> }
> -
> - _session = (StandardSession)
> manager.createEmptySession();
> - _session.readObjectData(ois);
> - _session.setManager(manager);
> - } else if
> (manager.getContext().getLogger().isDebugEnabled()) {
> -
> manager.getContext().getLogger().debug(getStoreName() + ": No persisted
> data object found");
> + // Break out after the finally block
> + numberOfTries = 0;
> }
> - // Break out after the finally block
> - numberOfTries = 0;
> } catch (SQLException e) {
>
> manager.getContext().getLogger().error(sm.getString(getStoreName() +
> ".SQLException", e));
> if (dbConnection != null)
> close(dbConnection);
> } finally {
> - try {
> - if (rst != null) {
> - rst.close();
> - }
> - } catch (SQLException e) {
> - // Ignore
> - }
> if (ois != null) {
> try {
> ois.close();
> @@ -787,10 +763,7 @@ public class JDBCStore extends StoreBase
> */
> @Override
> public void save(Session session) throws IOException {
> - ObjectOutputStream oos = null;
> ByteArrayOutputStream bos = null;
> - ByteArrayInputStream bis = null;
> - InputStream in = null;
>
> synchronized (this) {
> int numberOfTries = 2;
> @@ -807,35 +780,34 @@ public class JDBCStore extends StoreBase
> remove(session.getIdInternal(), _conn);
>
> bos = new ByteArrayOutputStream();
> - oos = new ObjectOutputStream(new
> BufferedOutputStream(bos));
> -
> - ((StandardSession) session).writeObjectData(oos);
> - oos.close();
> - oos = null;
> + try (ObjectOutputStream oos =
> + new ObjectOutputStream(new
> BufferedOutputStream(bos))) {
> + ((StandardSession) session).writeObjectData(oos);
> + }
> byte[] obs = bos.toByteArray();
> int size = obs.length;
> - bis = new ByteArrayInputStream(obs, 0, size);
> - in = new BufferedInputStream(bis, size);
> + try (ByteArrayInputStream bis = new
> ByteArrayInputStream(obs, 0, size);
> + InputStream in = new BufferedInputStream(bis,
> size)) {
> + if (preparedSaveSql == null) {
> + String saveSql = "INSERT INTO " +
> sessionTable + " ("
> + + sessionIdCol + ", " + sessionAppCol + ",
> "
> + + sessionDataCol + ", " + sessionValidCol
> + + ", " + sessionMaxInactiveCol + ", "
> + + sessionLastAccessedCol
> + + ") VALUES (?, ?, ?, ?, ?, ?)";
> + preparedSaveSql =
> _conn.prepareStatement(saveSql);
> + }
>
> - if (preparedSaveSql == null) {
> - String saveSql = "INSERT INTO " + sessionTable +
> " ("
> - + sessionIdCol + ", " + sessionAppCol + ", "
> - + sessionDataCol + ", " + sessionValidCol
> - + ", " + sessionMaxInactiveCol + ", "
> - + sessionLastAccessedCol
> - + ") VALUES (?, ?, ?, ?, ?, ?)";
> - preparedSaveSql = _conn.prepareStatement(saveSql);
> + preparedSaveSql.setString(1,
> session.getIdInternal());
> + preparedSaveSql.setString(2, getName());
> + preparedSaveSql.setBinaryStream(3, in, size);
> + preparedSaveSql.setString(4, session.isValid() ?
> "1" : "0");
> + preparedSaveSql.setInt(5,
> session.getMaxInactiveInterval());
> + preparedSaveSql.setLong(6,
> session.getLastAccessedTime());
> + preparedSaveSql.execute();
> + // Break out after the finally block
> + numberOfTries = 0;
> }
> -
> - preparedSaveSql.setString(1, session.getIdInternal());
> - preparedSaveSql.setString(2, getName());
> - preparedSaveSql.setBinaryStream(3, in, size);
> - preparedSaveSql.setString(4, session.isValid() ? "1"
> : "0");
> - preparedSaveSql.setInt(5,
> session.getMaxInactiveInterval());
> - preparedSaveSql.setLong(6,
> session.getLastAccessedTime());
> - preparedSaveSql.execute();
> - // Break out after the finally block
> - numberOfTries = 0;
> } catch (SQLException e) {
>
> manager.getContext().getLogger().error(sm.getString(getStoreName() +
> ".SQLException", e));
> if (dbConnection != null)
> @@ -843,16 +815,6 @@ public class JDBCStore extends StoreBase
> } catch (IOException e) {
> // Ignore
> } finally {
> - if (oos != null) {
> - oos.close();
> - }
> - if (bis != null) {
> - bis.close();
> - }
> - if (in != null) {
> - in.close();
> - }
> -
> release(_conn);
> }
> numberOfTries--;
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties
> (original)
> +++ tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties
> Wed Mar 26 13:09:39 2014
> @@ -34,8 +34,7 @@ managerBase.container.noop=Managers adde
> managerBase.createSession.ise=createSession: Too many active sessions
> managerBase.sessionTimeout=Invalid session timeout setting {0}
> standardManager.loading=Loading persisted sessions from {0}
> -standardManager.loading.cnfe=ClassNotFoundException while loading
> persisted sessions: {0}
> -standardManager.loading.ioe=IOException while loading persisted sessions:
> {0}
> +standardManager.loading.exception=Exception while loading persisted
> sessions
> standardManager.unloading=Saving persisted sessions to {0}
> standardManager.unloading.debug=Unloading persisted sessions
> standardManager.unloading.ioe=IOException while saving persisted
> sessions: {0}
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> ---
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties
> (original)
> +++
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties
> Wed Mar 26 13:09:39 2014
> @@ -27,8 +27,7 @@ JDBCStore.checkConnectionClassNotFoundEx
> managerBase.createSession.ise = createSession\: Demasiadas sesiones
> activas
> managerBase.sessionTimeout = Valor inv\u00E1lido de Tiempo Agotado de
> sesi\u00F3n {0}
> standardManager.loading = Cargando sesiones persistidas desde {0}
> -standardManager.loading.cnfe = ClassNotFoundException al cargar sesiones
> persistidas\: {0}
> -standardManager.loading.ioe = IOException al cargar sesiones
> persistidas\: {0}
> +standardManager.loading.exception = Exception al cargar sesiones
> persistidas
> standardManager.unloading = Salvando sesiones persistidas a {0}
> standardManager.unloading.ioe = IOException al salvar sesiones
> persistidas\: {0}
> standardManager.managerLoad = Excepci\u00F3n cargando sesiones desde
> almacenamiento persistente
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> ---
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties
> (original)
> +++
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties
> Wed Mar 26 13:09:39 2014
> @@ -27,8 +27,7 @@ JDBCStore.checkConnectionClassNotFoundEx
> managerBase.createSession.ise="createSession": Trop de sessions actives
> managerBase.sessionTimeout=R\u00e9glage du d\u00e9lai d''inactivit\u00e9
> (timeout) de session invalide {0}
> standardManager.loading=Chargement des sessions qui ont persist\u00e9
> depuis {0}
> -standardManager.loading.cnfe="ClassNotFoundException" lors du chargement
> de sessions persistantes: {0}
> -standardManager.loading.ioe="IOException" lors du chargement de sessions
> persistantes: {0}
> +standardManager.loading.exception="Exception" lors du chargement de
> sessions persistantes
> standardManager.unloading=Sauvegarde des sessions ayant persist\u00e9
> vers {0}
> standardManager.unloading.ioe="IOException" lors de la sauvegarde de
> sessions persistantes: {0}
> standardManager.managerLoad=Exception au chargement des sessions depuis
> le stockage persistant (persistent storage)
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> ---
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties
> (original)
> +++
> tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties
> Wed Mar 26 13:09:39 2014
> @@ -28,8 +28,7 @@ JDBCStore.checkConnectionClassNotFoundEx
> managerBase.createSession.ise=createSession:
> \u30a2\u30af\u30c6\u30a3\u30d6\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u591a\u3059\u304e\u307e\u3059
> managerBase.sessionTimeout=\u7121\u52b9\u306a\u30bb\u30c3\u30b7\u30e7\u30f3\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3067\u3059
> {0}
> standardManager.loading={0}
> \u304b\u3089\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059
> -standardManager.loading.cnfe=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306bClassNotFoundException\u304c\u767a\u751f\u3057\u307e\u3057\u305f:
> {0}
> -standardManager.loading.ioe=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306eIOException\u3067\u3059:
> {0}
>
> +standardManager.loading.exception=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306bException\u304c\u767a\u751f\u3057\u307e\u3057\u305f
> standardManager.unloading=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u3092
> {0} \u306b\u4fdd\u5b58\u3057\u307e\u3059
> standardManager.unloading.ioe=\u6301\u7d9a\u3055\u308c\u305f\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u4fdd\u5b58\u4e2d\u306eIOException\u3067\u3059:
> {0}
>
> standardManager.managerLoad=\u6c38\u7d9a\u8a18\u61b6\u88c5\u7f6e\u304b\u3089\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30c9\u4e2d\u306e\u4f8b\u5916\u3067\u3059
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardManager.java?rev=1581820&r1=1581819&r2=1581820&view=diff
>
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
> (original)
> +++ tomcat/trunk/java/org/apache/catalina/session/StandardManager.java Wed
> Mar 26 13:09:39 2014
> @@ -204,14 +204,11 @@ public class StandardManager extends Man
> return;
> if (log.isDebugEnabled())
> log.debug(sm.getString("standardManager.loading", pathname));
> - FileInputStream fis = null;
> - BufferedInputStream bis = null;
> ObjectInputStream ois = null;
> Loader loader = null;
> ClassLoader classLoader = null;
> - try {
> - fis = new FileInputStream(file.getAbsolutePath());
> - bis = new BufferedInputStream(fis);
> + try (FileInputStream fis = new
> FileInputStream(file.getAbsolutePath());
> + BufferedInputStream bis = new BufferedInputStream(fis)) {
> Context c = getContext();
> if (c != null)
> loader = c.getLoader();
> @@ -232,20 +229,6 @@ public class StandardManager extends Man
> return;
> } catch (IOException e) {
> log.error(sm.getString("standardManager.loading.ioe", e), e);
> - if (fis != null) {
> - try {
> - fis.close();
> - } catch (IOException f) {
> - // Ignore
> - }
> - }
> - if (bis != null) {
> - try {
> - bis.close();
> - } catch (IOException f) {
> - // Ignore
> - }
> - }
> throw e;
> }
>
> @@ -270,21 +253,8 @@ public class StandardManager extends Man
> }
> sessionCounter++;
> }
> - } catch (ClassNotFoundException e) {
> - log.error(sm.getString("standardManager.loading.cnfe",
> e), e);
> - try {
> - ois.close();
> - } catch (IOException f) {
> - // Ignore
> - }
> - throw e;
> - } catch (IOException e) {
> - log.error(sm.getString("standardManager.loading.ioe", e),
> e);
> - try {
> - ois.close();
> - } catch (IOException f) {
> - // Ignore
> - }
> + } catch (ClassNotFoundException | IOException e) {
> +
> log.error(sm.getString("standardManager.loading.exception"), e);
> throw e;
> } finally {
> // Close the input stream
> @@ -339,7 +309,6 @@ public class StandardManager extends Man
> *
> * @exception IOException if an input/output error occurs
> */
> - @SuppressWarnings("null")
> protected void doUnload() throws IOException {
>
> if (log.isDebugEnabled())
> @@ -356,51 +325,16 @@ public class StandardManager extends Man
> return;
> if (log.isDebugEnabled())
> log.debug(sm.getString("standardManager.unloading",
> pathname));
> - FileOutputStream fos = null;
> - BufferedOutputStream bos = null;
> - ObjectOutputStream oos = null;
> - boolean error = false;
> - try {
> - fos = new FileOutputStream(file.getAbsolutePath());
> - bos = new BufferedOutputStream(fos);
> - oos = new ObjectOutputStream(bos);
> - } catch (IOException e) {
> - error = true;
> - log.error(sm.getString("standardManager.unloading.ioe", e),
> e);
> - throw e;
> - } finally {
> - if (error) {
> - if (oos != null) {
> - try {
> - oos.close();
> - } catch (IOException ioe) {
> - // Ignore
> - }
> - }
> - if (bos != null) {
> - try {
> - bos.close();
> - } catch (IOException ioe) {
> - // Ignore
> - }
> - }
> - if (fos != null) {
> - try {
> - fos.close();
> - } catch (IOException ioe) {
> - // Ignore
> - }
> - }
> - }
> - }
> -
> - // Write the number of active sessions, followed by the details
> ArrayList<StandardSession> list = new ArrayList<>();
> - synchronized (sessions) {
> - if (log.isDebugEnabled())
> - log.debug("Unloading " + sessions.size() + " sessions");
> - try {
> - // oos can't be null here
> + try (FileOutputStream fos = new
> FileOutputStream(file.getAbsolutePath());
> + BufferedOutputStream bos = new BufferedOutputStream(fos);
> + ObjectOutputStream oos = new ObjectOutputStream(bos)) {
> +
> + // Write the number of active sessions, followed by the
> details
> + synchronized (sessions) {
> + if (log.isDebugEnabled())
> + log.debug("Unloading " + sessions.size() + "
> sessions");
> +
> oos.writeObject(new Integer(sessions.size()));
> Iterator<Session> elements = sessions.values().iterator();
> while (elements.hasNext()) {
> @@ -410,26 +344,10 @@ public class StandardManager extends Man
> session.passivate();
> session.writeObjectData(oos);
> }
> - } catch (IOException e) {
> - log.error(sm.getString("standardManager.unloading.ioe",
> e), e);
> - try {
> - oos.close();
> - } catch (IOException f) {
> - // Ignore
> - }
> - throw e;
> - }
> - }
> -
> - // Flush and close the output stream
> - try {
> - oos.flush();
> - } finally {
> - try {
> - oos.close();
> - } catch (IOException f) {
> - // Ignore
> }
> + } catch (IOException e) {
> + log.error(sm.getString("standardManager.unloading.ioe", e),
> e);
> + throw e;
> }
>
> // Expire all the sessions we just wrote
> @@ -449,7 +367,6 @@ public class StandardManager extends Man
>
> if (log.isDebugEnabled())
> log.debug("Unloading complete");
> -
> }
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
> --
> Keiichi.Fujino <de...@tomcat.apache.org>