cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java

2005-01-07 Thread remm
remm2005/01/07 07:09:37

  Modified:catalina/src/share/org/apache/catalina/session
JDBCStore.java
  Log:
  - 25889: don't execute queries twice.
  - Submitted by Tom Anderson.
  
  Revision  ChangesPath
  1.13  +13 -1 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JDBCStore.java2 Nov 2004 20:05:12 -   1.12
  +++ JDBCStore.java7 Jan 2005 15:09:37 -   1.13
  @@ -467,6 +467,8 @@
   }
   }
   keys = (String[]) tmpkeys.toArray(new 
String[tmpkeys.size()]);
  +// Break out after the finally block
  +numberOfTries = 0;
   } catch (SQLException e) {
   
manager.getContainer().getLogger().error(sm.getString(getStoreName() + 
.SQLException, e));
   keys = new String[0];
  @@ -524,6 +526,8 @@
   if (rst.next()) {
   size = rst.getInt(1);
   }
  +// Break out after the finally block
  +numberOfTries = 0;
   } catch (SQLException e) {
   
manager.getContainer().getLogger().error(sm.getString(getStoreName() + 
.SQLException, e));
   if (dbConnection != null)
  @@ -610,6 +614,8 @@
 } else if 
(manager.getContainer().getLogger().isDebugEnabled()) {
   
manager.getContainer().getLogger().debug(getStoreName() + : No persisted data 
object found);
   }
  +// Break out after the finally block
  +numberOfTries = 0;
   } catch (SQLException e) {
   
manager.getContainer().getLogger().error(sm.getString(getStoreName() + 
.SQLException, e));
   if (dbConnection != null)
  @@ -669,6 +675,8 @@
   preparedRemoveSql.setString(1, id);
   preparedRemoveSql.setString(2, getName());
   preparedRemoveSql.execute();
  +// Break out after the finally block
  +numberOfTries = 0;
   } catch (SQLException e) {
   
manager.getContainer().getLogger().error(sm.getString(getStoreName() + 
.SQLException, e));
   if (dbConnection != null)
  @@ -709,6 +717,8 @@
   
   preparedClearSql.setString(1, getName());
   preparedClearSql.execute();
  +// Break out after the finally block
  +numberOfTries = 0;
   } catch (SQLException e) {
   
manager.getContainer().getLogger().error(sm.getString(getStoreName() + 
.SQLException, e));
   if (dbConnection != null)
  @@ -775,6 +785,8 @@
   preparedSaveSql.setInt(5, 
session.getMaxInactiveInterval());
   preparedSaveSql.setLong(6, 
session.getLastAccessedTime());
   preparedSaveSql.execute();
  +// Break out after the finally block
  +numberOfTries = 0;
   } catch (SQLException e) {
   
manager.getContainer().getLogger().error(sm.getString(getStoreName() + 
.SQLException, e));
   if (dbConnection != null)
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java PersistentManagerBase.java StoreBase.java mbeans-descriptors.xml

2004-11-02 Thread pero
pero2004/11/02 11:07:51

  Modified:catalina/src/share/org/apache/catalina/session
JDBCStore.java PersistentManagerBase.java
StoreBase.java mbeans-descriptors.xml
  Log:
  Add processExpiresFrequency to PersistentManagerBase and made some small JDBCStore 
optimizations (pero)
  
  Revision  ChangesPath
  1.11  +28 -30
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JDBCStore.java23 Jun 2004 13:51:36 -  1.10
  +++ JDBCStore.java2 Nov 2004 19:07:50 -   1.11
  @@ -440,9 +440,6 @@
* @exception IOException if an input/output error occurred
*/
   public String[] keys() throws IOException {
  -String keysSql =
  -SELECT  + sessionIdCol +  FROM  + sessionTable +
  - WHERE  + sessionAppCol +  = ?;
   ResultSet rst = null;
   String keys[] = null;
   synchronized (this) {
  @@ -455,6 +452,9 @@
   }
   try {
   if (preparedKeysSql == null) {
  + String keysSql =
  + SELECT  + sessionIdCol +  
FROM  + sessionTable +
  +  WHERE  + sessionAppCol +  
= ?;
   preparedKeysSql = _conn.prepareStatement(keysSql);
   }
   
  @@ -500,9 +500,6 @@
*/
   public int getSize() throws IOException {
   int size = 0;
  -String sizeSql =
  -SELECT COUNT( + sessionIdCol + ) FROM  + sessionTable +
  - WHERE  + sessionAppCol +  = ?;
   ResultSet rst = null;
   
   synchronized (this) {
  @@ -516,6 +513,9 @@
   
   try {
   if (preparedSizeSql == null) {
  + String sizeSql =
  + SELECT COUNT( + sessionIdCol 
+ ) FROM  + sessionTable +
  +  WHERE  + sessionAppCol +  
= ?;
   preparedSizeSql = _conn.prepareStatement(sizeSql);
   }
   
  @@ -562,11 +562,7 @@
   ObjectInputStream ois = null;
   BufferedInputStream bis = null;
   Container container = manager.getContainer();
  -String loadSql =
  -SELECT  + sessionIdCol + ,  + sessionDataCol +  FROM  +
  -sessionTable +  WHERE  + sessionIdCol +  = ? AND  +
  -sessionAppCol +  = ?;
  -
  + 
   synchronized (this) {
   int numberOfTries = 2;
   while (numberOfTries  0) {
  @@ -577,7 +573,11 @@
   
   try {
   if (preparedLoadSql == null) {
  -preparedLoadSql = _conn.prepareStatement(loadSql);
  + String loadSql =
  + SELECT  + 
sessionIdCol + ,  + sessionDataCol +  FROM  +
  + sessionTable +  WHERE 
 + sessionIdCol +  = ? AND  +
  + sessionAppCol +  = ?;
  +   preparedLoadSql = _conn.prepareStatement(loadSql);
   }
   
   preparedLoadSql.setString(1, id);
  @@ -607,8 +607,7 @@
   _session = (StandardSession) manager.createEmptySession();
   _session.readObjectData(ois);
   _session.setManager(manager);
  -
  -} else if (manager.getContainer().getLogger().isDebugEnabled()) 
{
  +  } else if 
(manager.getContainer().getLogger().isDebugEnabled()) {
   manager.getContainer().getLogger().debug(getStoreName() + 
: No persisted data object found);
   }
   } catch (SQLException e) {
  @@ -649,9 +648,6 @@
* @exception IOException if an input/output error occurs
*/
   public void remove(String id) throws IOException {
  -String removeSql =
  -DELETE FROM  + sessionTable +  WHERE  + sessionIdCol +
  - = ?  AND  + sessionAppCol +  = ?;
   
   synchronized (this) {
   int numberOfTries = 2;
  @@ -664,6 +660,9 @@
   
   try {
   if (preparedRemoveSql == null) {
  + String removeSql =
  +  

Re: cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java PersistentManagerBase.java StoreBase.java mbeans-descriptors.xml

2004-11-02 Thread Bill Barker

- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, November 02, 2004 11:07 AM
Subject: cvs commit:
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session
JDBCStore.java PersistentManagerBase.java StoreBase.java
mbeans-descriptors.xml


 pero2004/11/02 11:07:51
if (preparedKeysSql == null) {
   + String keysSql =
   + SELECT  + sessionIdCol +  FROM  + sessionTable +
   +  WHERE  + sessionAppCol +  = ?;
preparedKeysSql =
_conn.prepareStatement(keysSql);
}

I can hear the sirens from the dreaded tab-police :).



This message is intended only for the use of the person(s) listed above as the 
intended recipient(s), and may contain information that is PRIVILEGED and 
CONFIDENTIAL.  If you are not an intended recipient, you may not read, copy, or 
distribute this message or any attachment. If you received this communication in 
error, please notify us immediately by e-mail and then delete all copies of this 
message and any attachments.

In addition you should be aware that ordinary (unencrypted) e-mail sent through the 
Internet is not secure. Do not send confidential or sensitive information, such as 
social security numbers, account numbers, personal identification numbers and 
passwords, to us via ordinary (unencrypted) e-mail.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Re: cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java PersistentManagerBase.java StoreBase.java mbeans-descriptors.xml

2004-11-02 Thread Peter Rossbach
Hoho,
I reformat a little but I work with Eclipse and format the code again 
and replace tab to space.

thanks
Peter
Bill Barker schrieb:
- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, November 02, 2004 11:07 AM
Subject: cvs commit:
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session
JDBCStore.java PersistentManagerBase.java StoreBase.java
mbeans-descriptors.xml
 

pero2004/11/02 11:07:51
  if (preparedKeysSql == null) {
 + String keysSql =
 + SELECT  + sessionIdCol +  FROM  + sessionTable +
 +  WHERE  + sessionAppCol +  = ?;
  preparedKeysSql =
   

_conn.prepareStatement(keysSql);
 

  }
   

I can hear the sirens from the dreaded tab-police :).
 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java

2004-11-02 Thread pero
pero2004/11/02 12:05:12

  Modified:catalina/src/share/org/apache/catalina/session
JDBCStore.java
  Log:
  reformat the changes after a hint from bill. :-)
  
  Revision  ChangesPath
  1.12  +27 -28
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- JDBCStore.java2 Nov 2004 19:07:50 -   1.11
  +++ JDBCStore.java2 Nov 2004 20:05:12 -   1.12
  @@ -452,11 +452,11 @@
   }
   try {
   if (preparedKeysSql == null) {
  - String keysSql =
  - SELECT  + sessionIdCol +  
FROM  + sessionTable +
  -  WHERE  + sessionAppCol +  
= ?;
  +String keysSql = SELECT  + sessionIdCol +  FROM 
  ++ sessionTable +  WHERE  + sessionAppCol
  ++  = ?;
   preparedKeysSql = _conn.prepareStatement(keysSql);
  -}
  + }
   
   preparedKeysSql.setString(1, getName());
   rst = preparedKeysSql.executeQuery();
  @@ -513,11 +513,11 @@
   
   try {
   if (preparedSizeSql == null) {
  - String sizeSql =
  - SELECT COUNT( + sessionIdCol 
+ ) FROM  + sessionTable +
  -  WHERE  + sessionAppCol +  
= ?;
  +String sizeSql = SELECT COUNT( + sessionIdCol
  ++ ) FROM  + sessionTable +  WHERE 
  ++ sessionAppCol +  = ?;
   preparedSizeSql = _conn.prepareStatement(sizeSql);
  -}
  + }
   
   preparedSizeSql.setString(1, getName());
   rst = preparedSizeSql.executeQuery();
  @@ -573,11 +573,11 @@
   
   try {
   if (preparedLoadSql == null) {
  - String loadSql =
  - SELECT  + 
sessionIdCol + ,  + sessionDataCol +  FROM  +
  - sessionTable +  WHERE 
 + sessionIdCol +  = ? AND  +
  - sessionAppCol +  = ?;
  -   preparedLoadSql = _conn.prepareStatement(loadSql);
  +String loadSql = SELECT  + sessionIdCol + , 
  ++ sessionDataCol +  FROM  + sessionTable
  ++  WHERE  + sessionIdCol +  = ? AND 
  ++ sessionAppCol +  = ?;
  +preparedLoadSql = _conn.prepareStatement(loadSql);
   }
   
   preparedLoadSql.setString(1, id);
  @@ -660,9 +660,9 @@
   
   try {
   if (preparedRemoveSql == null) {
  - String removeSql =
  - DELETE FROM  + sessionTable 
+  WHERE  + sessionIdCol +
  -  = ?  AND  + sessionAppCol + 
 = ?;
  +String removeSql = DELETE FROM  + sessionTable
  ++  WHERE  + sessionIdCol +  = ?  AND 
  ++ sessionAppCol +  = ?;
   preparedRemoveSql = _conn.prepareStatement(removeSql);
   }
   
  @@ -702,8 +702,8 @@
   
   try {
   if (preparedClearSql == null) {
  - String clearSql =
  - DELETE FROM  + sessionTable 
+  WHERE  + sessionAppCol +  = ?;
  +String clearSql = DELETE FROM  + sessionTable
  + +  WHERE  + sessionAppCol +  = ?;
   preparedClearSql = _conn.prepareStatement(clearSql);
   }
   
  @@ -759,15 +759,14 @@
   in = new BufferedInputStream(bis, size);
   
   if (preparedSaveSql == null) {
  - String saveSql =
  - INSERT INTO  + sessionTable 
+  ( + 

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java

2004-03-20 Thread markt
markt   2004/03/20 03:11:07

  Modified:catalina/src/share/org/apache/catalina/session
JDBCStore.java
  Log:
  - Fix bug 18369. Prevent npe in StoreBase if a sql exception occurs.
  - Ported from TC4.
  
  Revision  ChangesPath
  1.9   +2 -1  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JDBCStore.java27 Feb 2004 14:58:46 -  1.8
  +++ JDBCStore.java20 Mar 2004 11:11:07 -  1.9
  @@ -469,6 +469,7 @@
   keys = (String[]) tmpkeys.toArray(new String[tmpkeys.size()]);
   } catch (SQLException e) {
   log(sm.getString(getStoreName() + .SQLException, e));
  +keys = new String[0];
   // Close the connection so that it gets reopened next time
   if (dbConnection != null)
   close(dbConnection);
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java LocalStrings.properties

2004-01-09 Thread remm
remm2004/01/09 03:35:08

  Modified:catalina/src/share/org/apache/catalina/session
JDBCStore.java LocalStrings.properties
  Log:
  - Allow configuring users and passwords.
  - Automatically reconnect if connection fails for some reason.
  - Please review :)
  - Bug 25889.
  - Submitted by Peter Rossbach.
  - I think we would need to add a DataSource based persistent store (this way,
it would have mush better scalability, and would not need to care about the
reconnect logic).
  
  Revision  ChangesPath
  1.7   +457 -331  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JDBCStore.java2 Sep 2003 21:22:01 -   1.6
  +++ JDBCStore.java9 Jan 2004 11:35:08 -   1.7
  @@ -64,6 +64,12 @@
   
   package org.apache.catalina.session;
   
  +import org.apache.catalina.Container;
  +import org.apache.catalina.LifecycleException;
  +import org.apache.catalina.Loader;
  +import org.apache.catalina.Session;
  +import org.apache.catalina.Store;
  +import org.apache.catalina.util.CustomObjectInputStream;
   import java.io.BufferedInputStream;
   import java.io.BufferedOutputStream;
   import java.io.ByteArrayInputStream;
  @@ -73,18 +79,12 @@
   import java.io.ObjectInputStream;
   import java.io.ObjectOutputStream;
   import java.sql.Connection;
  -import java.sql.DriverManager;
  +import java.sql.Driver;
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
   import java.util.ArrayList;
  -
  -import org.apache.catalina.Container;
  -import org.apache.catalina.LifecycleException;
  -import org.apache.catalina.Loader;
  -import org.apache.catalina.Session;
  -import org.apache.catalina.Store;
  -import org.apache.catalina.util.CustomObjectInputStream;
  +import java.util.Properties;
   
   /**
* Implementation of the codeStore/code interface that stores
  @@ -96,7 +96,7 @@
*/
   
   public class JDBCStore
  -extends StoreBase implements Store {
  +extends StoreBase implements Store {
   
   /**
* The descriptive information about this implementation.
  @@ -119,14 +119,30 @@
   protected String threadName = JDBCStore;
   
   /**
  + * The connection username to use when trying to connect to the database.
  + */
  +protected String connectionName = null;
  +
  +
  +/**
  + * The connection URL to use when trying to connect to the database.
  + */
  +protected String connectionPassword = null;
  +
  +/**
* Connection string to use when connecting to the DB.
*/
  -protected String connString = null;
  +protected String connectionURL = null;
   
   /**
* The database connection.
*/
  -private Connection conn = null;
  +private Connection dbConnection = null;
  +
  +/**
  + * Instance of the JDBC Driver class we use as a connection factory.
  + */
  +protected Driver driver = null;
   
   /**
* Driver to use.
  @@ -208,7 +224,7 @@
* Return the info for this Store.
*/
   public String getInfo() {
  -return(info);
  +return (info);
   }
   
   /**
  @@ -237,14 +253,14 @@
* Return the thread name for this Store.
*/
   public String getThreadName() {
  -return(threadName);
  +return (threadName);
   }
   
   /**
* Return the name for this Store, used for logging.
*/
   public String getStoreName() {
  -return(storeName);
  +return (storeName);
   }
   
   /**
  @@ -256,8 +272,8 @@
   String oldDriverName = this.driverName;
   this.driverName = driverName;
   support.firePropertyChange(driverName,
  -   oldDriverName,
  -   this.driverName);
  +oldDriverName,
  +this.driverName);
   this.driverName = driverName;
   }
   
  @@ -265,7 +281,41 @@
* Return the driver for this Store.
*/
   public String getDriverName() {
  -return(this.driverName);
  +return (this.driverName);
  +}
  +
  +/**
  + * Return the username to use to connect to the database.
  + *
  + */
  +public String getConnectionName() {
  +return connectionName;
  +}
  +
  +/**
  + * Set the username to use to connect to the database.
  + *
  + * @param connectionName Username
  + */
  +public void setConnectionName(String connectionName) {
  +this.connectionName = connectionName;
  +}
  +
  +/**
  + * Return 

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java

2003-03-11 Thread glenn
glenn   2003/03/11 17:21:58

  Modified:catalina/src/share/org/apache/catalina/session
JDBCStore.java
  Log:
  Fix Bug 17900, first session skipped
  
  Revision  ChangesPath
  1.5   +7 -10 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JDBCStore.java4 Mar 2003 04:31:47 -   1.4
  +++ JDBCStore.java12 Mar 2003 01:21:58 -  1.5
  @@ -461,16 +461,13 @@
   
   preparedKeysSql.setString(1, getName());
   rst = preparedKeysSql.executeQuery();
  -if (rst != null  rst.next()) {
  -ArrayList tmpkeys = new ArrayList();
  +ArrayList tmpkeys = new ArrayList();
  +if (rst != null) {
   while(rst.next()) {
   tmpkeys.add(rst.getString(1));
   }
  -keys = (String[])
  -tmpkeys.toArray(new String[tmpkeys.size()]);
  -} else {
  -keys = new String[0];
   }
  +keys = (String[]) tmpkeys.toArray(new String[tmpkeys.size()]);
   } catch(SQLException e) {
   log(sm.getString(getStoreName()+.SQLException, e));
   } finally {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java StoreBase.java

2003-03-03 Thread glenn
glenn   2003/03/03 20:31:47

  Modified:webapps/docs/config manager.xml
   catalina/src/share/org/apache/catalina/session
JDBCStore.java StoreBase.java
  Log:
  Port JDBCStore and StoreBase patches from Tomcat 4.1
  
  Revision  ChangesPath
  1.5   +9 -1  jakarta-tomcat-catalina/webapps/docs/config/manager.xml
  
  Index: manager.xml
  ===
  RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/config/manager.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- manager.xml   15 Jan 2003 03:40:44 -  1.4
  +++ manager.xml   4 Mar 2003 04:31:46 -   1.5
  @@ -344,6 +344,12 @@
 pJava class name of the JDBC driver to be used./p
   /attribute
   
  +attribute name=sessionAppCol required=true
  +  pName of the database column, contained in the specified session
  +  table, that contains the Engine, Host, and Web Application Context
  +  name in the format code/Engine/Host/Context/code./p
  +/attribute
  +
   attribute name=sessionDataCol required=true
 pName of the database column, contained in the specified
 session table, that contains the serialized form of all session
  @@ -399,7 +405,9 @@
 valid_session  char(1) not null,
 max_inactive   int not null,
 last_accessbigint not null,
  -  session_data   mediumblob
  +  app_name   varchar(255),
  +  session_data   mediumblob,
  +  KEY kapp_name(app_name)
   );
   /source
   
  
  
  
  1.4   +271 -190  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java
  
  Index: JDBCStore.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JDBCStore.java9 Dec 2002 15:57:43 -   1.3
  +++ JDBCStore.java4 Mar 2003 04:31:47 -   1.4
  @@ -80,6 +80,7 @@
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
  +import java.util.ArrayList;
   import org.apache.catalina.Container;
   import org.apache.catalina.LifecycleException;
   import org.apache.catalina.Loader;
  @@ -105,6 +106,11 @@
   protected static String info = JDBCStore/1.0;
   
   /**
  + * Context name associated with this Store
  + */
  +private String name = null;
  +
  +/**
* Name to register for this Store, used for logging.
*/
   protected static String storeName = JDBCStore;
  @@ -137,6 +143,11 @@
   protected String sessionTable = tomcat$sessions;
   
   /**
  + * Column to use for /Engine/Host/Context name
  + */
  +protected String sessionAppCol = app;
  +
  +/**
* Id column to use.
*/
   protected String sessionIdCol = id;
  @@ -203,6 +214,28 @@
   }
   
   /**
  + * Return the name for this instance (built from container name)
  + */
  +public String getName() {
  +if (name == null) {
  +Container container = manager.getContainer();
  +String contextName = container.getName();
  +String hostName = ;
  +String engineName = ;
  +
  +if (container.getParent() != null) {
  +Container host = container.getParent();
  +hostName = host.getName();
  +if (host.getParent() != null) {
  +engineName = host.getParent().getName();
  +}
  +}
  +name = / + engineName + / + hostName + contextName;
  +}
  +return name;
  +}
  +
  +/**
* Return the thread name for this Store.
*/
   public String getThreadName() {
  @@ -278,6 +311,26 @@
   }
   
   /**
  + * Set the App column for the table.
  + *
  + * @param sessionAppCol the column name
  + */
  +public void setSessionAppCol(String sessionAppCol) {
  +String oldSessionAppCol = this.sessionAppCol;
  +this.sessionAppCol = sessionAppCol;
  +support.firePropertyChange(sessionAppCol,
  +   oldSessionAppCol,
  +   this.sessionAppCol);
  +}
  +
  +/**
  + * Return the web application name column for the table.
  + */
  +public String getSessionAppCol() {
  +return(this.sessionAppCol);
  +}
  +
  +/**
* Set the Id column for the table.
*
* @param sessionIdCol the column name
  @@ -388,45 +441,49 @@
*/
   public String[] keys() throws IOException {
   String keysSql =
  -SELECT COUNT(s.+sessionIdCol+), c.+sessionIdCol+
  - FROM +sessionTable+ s, +sessionTable+ c+
  - GROUP