cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session JDBCStore.java
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
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
- 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
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
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
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
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
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
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