Author: violetagg
Date: Thu Aug 15 14:06:20 2013
New Revision: 1514281
URL: http://svn.apache.org/r1514281
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55357
Set the web app classloader as a context classloader before reading the object
data.
Modified:
tomcat/trunk/java/org/apache/catalina/session/FileStore.java
tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
Modified: tomcat/trunk/java/org/apache/catalina/session/FileStore.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/FileStore.java?rev=1514281&r1=1514280&r2=1514281&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/FileStore.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/FileStore.java Thu Aug 15
14:06:20 2013
@@ -250,6 +250,7 @@ public final class FileStore extends Sto
ObjectInputStream ois = null;
Loader loader = null;
ClassLoader classLoader = null;
+ ClassLoader oldThreadContextCL =
Thread.currentThread().getContextClassLoader();
try {
fis = new FileInputStream(file.getAbsolutePath());
bis = new BufferedInputStream(fis);
@@ -258,10 +259,18 @@ public final class FileStore extends Sto
loader = context.getLoader();
if (loader != null)
classLoader = loader.getClassLoader();
- if (classLoader != null)
+ if (classLoader != null) {
+ Thread.currentThread().setContextClassLoader(classLoader);
ois = new CustomObjectInputStream(bis, classLoader);
- else
+ } else {
ois = new ObjectInputStream(bis);
+ }
+
+ StandardSession session =
+ (StandardSession) manager.createEmptySession();
+ session.readObjectData(ois);
+ session.setManager(manager);
+ return (session);
} catch (FileNotFoundException e) {
if (manager.getContext().getLogger().isDebugEnabled())
manager.getContext().getLogger().debug("No persisted data file
found");
@@ -282,21 +291,16 @@ public final class FileStore extends Sto
}
}
throw e;
- }
-
- try {
- StandardSession session =
- (StandardSession) manager.createEmptySession();
- session.readObjectData(ois);
- session.setManager(manager);
- return (session);
} finally {
- // Close the input stream
- try {
- ois.close();
- } catch (IOException f) {
- // Ignore
+ if (ois != null) {
+ // Close the input stream
+ try {
+ ois.close();
+ } catch (IOException f) {
+ // Ignore
+ }
}
+ Thread.currentThread().setContextClassLoader(oldThreadContextCL);
}
}
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=1514281&r1=1514280&r2=1514281&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java Thu Aug 15
14:06:20 2013
@@ -607,6 +607,7 @@ public class JDBCStore extends StoreBase
return (null);
}
+ ClassLoader oldThreadContextCL =
Thread.currentThread().getContextClassLoader();
try {
if (preparedLoadSql == null) {
String loadSql = "SELECT " + sessionIdCol + ", "
@@ -629,6 +630,7 @@ public class JDBCStore extends StoreBase
classLoader = loader.getClassLoader();
}
if (classLoader != null) {
+
Thread.currentThread().setContextClassLoader(classLoader);
ois = new CustomObjectInputStream(bis,
classLoader);
} else {
@@ -667,6 +669,7 @@ public class JDBCStore extends StoreBase
// Ignore
}
}
+
Thread.currentThread().setContextClassLoader(oldThreadContextCL);
release(_conn);
}
numberOfTries--;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]