Sun Java System Web Server 7.0 Update 2 Developer's Guide to Java Web Applications

IWS60 Session Manager

The IWS60 session manager ensures backward compatibility with any 6.0 session managers that you may have created.

IWS60 works in both single-process and multi-process mode. It can be used for sharing session information across multiple processes possibly running on different machines.


Note –

The MaxProcs directive in the magnus.conf file determines whether the server is running in single-process or multi-process mode. If the value of MaxProcs is higher than 1 and no session manager is configured, then by default the session manager used is the IWS60 with file-based persistence. The Maxprocs is deprecated in Web Server 7.0.


For session persistence, IWS60 can use a database or a distributed file system (DFS) path that is accessible from all servers in a server farm. Each session is serialized to the database or distributed file system. You can also create your own persistence mechanism.

If Web Server is running in single-process mode, then by default, no session persistence mode is defined and therefore sessions are not persistent.

If Web Server is running in multi process mode, sessions are persistent by default. If a persistence mode is not defined, IWS60 uses a DFS.

Multi-process mode is supported only on UNIX platforms. All multi process mode features of IWS60 are ignored on Windows.

Enabling IWS60

You can enable IWS60 to change its default parameters. You can also enable IWS60 for a particular context if the server is running in single-process mode. To do so, edit the sun-web.xml file for the web application as in the following example. The persistence-type must be set to s1ws60.

<sun-web-app>
   ...
   <session-config>
    <session-manager persistence-type=”s1ws60”>
     <manager-properties>
      <property name=”classname” value=”com.iplanet.server.http.
                                       session.IWSSessionManager”/>
      // other manager-related properties
     </manager-properties>
    </session-manager> 
     ...
   </session-config>
   ...
</sun-web-app>

In the case of persistent sessions:

<sun-web-app>
		...
		<session-config/>
		 <session-manager persistence-type=”s1ws60”>
		  <manager-properties>
		   <property name=”classname” value=”com.iplanet.server.http.
                                       session.IWSSessionManager”/>
   	// other manager-related properties
    </manager-properties>
    <store-properties>
     <property name=”classname” value=”com.iplanet.server.http.
                                               session.FileStore”/>
     <property name=”directory” value=”<directory name to store the_
persistant_sessions>”/>
       // other store-related properties
     </store-properties>
    </session-manager> 
   	  ...
   </session-config>
  	 ...
		</sun-web-app>

For more information about the sun-web.xml file, see Chapter 9, Deploying Web Applications.

Manager Properties for IWS60

The following table describes manager-properties properties for the IWS60 session manager.

Table 6–6 manager-properties for IWS60

Property Name  

Default Value  

Description  

maxSessions

1000

The maximum number of sessions maintained by the session manager at any given time. The session manager refuses to create any more new sessions if maxSessions are already number of sessions present at that time.

timeOut

1800

The amount of time in seconds after a session is accessed by the client before the session manager destroys it. Those sessions that are not accessed for at least timeOut seconds are destroyed by the reaper method.

reapInterval

600

The amount of time in seconds that the SessionReaper thread sleeps before calling the reaper method again.

maxLocks

10

The number of cross-process locks to use for synchronizing access to individual sessions across processes. The default value is used if the value 0 is specified. This parameter is ignored in single-process mode.

session-data-store

 

The name of the class that determines the means of session persistence. The classes supplied with Web Server are: 

  • com.iplanet.server.http.session.JdbcStore

  • com.iplanet.server.http.session.FileStore

    If you do not specify the session-data-store parameter, sessions are not persistent in single-process mode, and FileStore is the default in multi-process mode.

    The JdbcStore and FileStore classes are subclasses of the session-data-store class. You can create your own class that implements session persistence by extending SessionDataStore.

session-failover-enabled

 

Specifies whether sessions are reloaded from the persistent store for every request, and always forced to true in multi process mode.

Applicable only if the session-data-store parameter is set to the JdbcStore or FileStore class.

session-data-dir

The following text is single path. 

server_root/server_id/SessionData/virtual_server_id/web_app_URI

The directory in which session data for all servers and web applications is kept. 

Applicable only if the session-data-store parameter is set to the FileStore class.

provider

sun.jdbc.odbc.JdbcOdbcDriver

The JDBC driver. For more information about the JDBC API, see http://java.sun.com/products/jdbc/index.jsp

Applicable only if the session-data-store parameter is set to the JdbcStore class.

url

jdbc:odbc:LocalServer

Specifies the data source. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

table

sessions

Name of the SQL table that store sessions. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

username

none 

The login user name for the database. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

password

none 

The login password for the database. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

reaperActive

true

When set to true, the session manager runs session reaper to remove expired sessions from the database. The default is true. Only one server in the cluster should run the reaper.

Applicable only if the session-data-store parameter is set to the JdbcStore class.

accessTimeColumn

AccessTime

The name of the column that holds the last access time in minutes. The SQL type is NUMERIC(9).

Applicable only if the session-data-store parameter is set to the JdbcStore class.

timeOutColumn

TimeOut

The name of the column that holds the session timeout in minutes. The SQL type is NUMERIC(9).

Applicable only if the session-data-store parameter is set to the JdbcStore class.

sessionIdColumn

SessionID

The name of the column that holds the session ID. The SQL type is VARCHAR(100).

Applicable only if the session-data-store parameter is set to the JdbcStore class.

valueColumn

Value

The name of the column that holds the session object. The SQL type is VARBINARY(4096). This column must be large enough to accommodate all of your session data.

Applicable only if the session-data-store parameter is set to the JdbcStore class.

lookupPool

4

The number of dedicated connections that perform lookup operations on the database. For higher performance, use a precompiled SQL statement for each of these connections. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

insertPool

4

The number of dedicated connections that perform insert operations on the database. Each of these connections would have a precompiled SQL statement for higher performance. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

updatePool

4

The number of dedicated connections that perform update operations on the database. For higher performance, use a precompiled SQL statement for each of these connections. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.

deletePool

2

The number of dedicated connections that perform delete operations on the database. For higher performance, use a precompiled SQL statement for each of these connections. 

Applicable only if the session-data-store parameter is set to the JdbcStore class.


Note –

Prior to using JdbcStore, you must create the table in which the session information is stored. The name of the table is specified by the table parameter, and the table’s four columns are specified by the accessTimeColumn, timeOutColumn, sessionIdColumn, and valueColumn parameters.



Note –

FileStore, JdbcStore, IWSSessionManager, IWSHttpSession, IWSHttpSessionManager, and SessionDataStore have been deprecated in Web Server.


Source Code for IWS60

The IWS60 session manager creates an IWSHttpSession object for each session. The source files for IWSSessionManager.java and IWSHttpSession.java are in the install_dir/lib directory. The source code files for IWSSessionManager.java and IWSHttpSession.java are provided, so you can use them as the starting point for defining your own session managers and session objects.

IWSSessionManager extends IWSHttpSessionManager. The class file for IWSHttpSessionManager is in the JAR file webserv-rt.jar in the directory install_dir/lib. The IWS60 implements all of the methods in IWSHttpSessionManager that need to be implemented, so you can use IWSSessionManager as an example of how to extend IWSHttpSessionManager. When compiling your subclass of IWSSessionManager or IWSHttpSessionManager, be sure that the JAR file webserv-rt.jar is in your compiler’s classpath.

The JdbcStore.java and FileStore.java source files and the source file for the parent class, SessionDataStore.java, are provided so you can modify the session persistence mechanism of IWS60. These files are also located in the install-dir/lib directory.