Session Servlet Example: Difference between revisions
(Created page with "=Internal= * HTTP Session =Overview= =Source Code= <blockquote style="background-color: AliceBlue; border: solid thin LightSteelBlue;"> :A HTTP Session Servlet https:/...") |
m (Ovidiu moved page Playground Session Servlet Example to Session Servlet Example) |
||
(32 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Internal= | =Internal= | ||
* [[HTTP Session]] | * [[HTTP_Session#Example|HTTP Session]] | ||
* [[Servlet_Session_Tracking_API#Example|Servlet Session Tracking API]] | |||
=Overview= | =Overview= | ||
A simple servlet that can be deployed within a JEE container and used to test continuity, load balancing, failover, session stickiness, session replication, etc. It has been tested to work with WildFly/EAP and with Tomcat. It was written to avoid container-specific dependencies. Its only dependencies are slf4j for logging and the Servlet API. | |||
=Source Code= | =Source Code= | ||
< | {{External|https://github.com/NovaOrdis/novaordis-session-servlet}} | ||
: | |||
=Build= | |||
<pre> | |||
mvn clean package | |||
</pre> | |||
=Deploy= | |||
Copy ./target/session-servlet.war into the deployment directory of the application server. | |||
=Usage= | |||
==Authentication== | |||
The default build produces a servlet that ''does NOT require authentication''. | |||
If you want authentication, do this (JBoss 5 procedure, may need to be updated for WildFly): | |||
1. Un-comment <tt>web.xml</tt> section starting with <tt><security-constraint></tt> and ending with <tt></security-role></tt>. | |||
2. Replace "admin" with a valid role. The replacement must be done in both places where <tt><role-name></tt> is mentioned. For example, if deployed on JBoss 5, pick up an appropriate role from <tt>$JBOSS_HOME/server/$JBOSS_PROFILE/conf/props/jmx-console-roles.properties</tt>. | |||
3. Enable <tt><security-domain></tt> in <tt>jboss-web.xml</tt> and make sure it points to the correct one on the server. | |||
==HTTP Session Support== | |||
The servlet will NOT establish a HTTP session by default. | |||
If you wish it to establish a session, call the /establish-session URL: | |||
<pre> | |||
http://localhost:8080/session-servlet/establish-session | |||
</pre> | |||
This will create a HTTP session and send the Set-Cookie JSESSIONID back to browser. If /establish-session is called repeatedly on an already established session, the application will warn, but otherwise nothing else will happen; enable-session is idempotent. | |||
To get more information about the current session, use: | |||
<pre> | |||
http://localhost:8080/session-servlet/describe-session | |||
</pre> | |||
To invalidate the current session, use: | |||
<pre> | |||
http://localhost:8080/session-servlet/invalidate-session | |||
</pre> | |||
To write a String attribute into the session use: | |||
<pre> | |||
http://localhost:8080/session-servlet/write/<attribute-name>/<attribute-value> | |||
</pre> | |||
To read the value corresponding to previously written String attribute: | |||
<pre> | |||
http://localhost:8080/session-servlet/read/<attribute-name> | |||
</pre> | |||
To get the names of all attributes stored into the session, use: | |||
<pre> | |||
http://localhost:8080/session-servlet/attributes | |||
</pre> | |||
Note that the attribute count is displayed as part of the <tt>describe-session</tt> command output. | |||
===Application Type=== | |||
The session servlet application allows for experiments with an application type, represented by the [https://github.com/NovaOrdis/playground/blob/master/jee/servlet/session-servlet/src/main/java/io/novaordis/playground/jee/servlet/session/applicaton/ApplicationType.java ApplicationType] class. The <tt>ApplicationType</tt> can be modified into a backward compatible new version, incompatible new version, etc. | |||
To write a String into ApplicationType instance, that will be in turn written into the session, use: | |||
<pre> | |||
http://localhost:8080/session-servlet/write/apptype/<string-value> | |||
</pre> | |||
To read the String value from the ApplicationType instance maintained by the session: | |||
<pre> | |||
http://localhost:8080/session-servlet/read/apptype | |||
</pre> | |||
===Enable HTTP Session Replication=== | |||
The application allows for experiments with distributable sessions. To enable session replication: | |||
1. Uncomment the <tt><distributable></tt> configuration element in <tt>src/main/webapp/WEB-INF/web.xml</tt>. For more details on web.xml, see: | |||
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | |||
:[[web.xml]] | |||
</blockquote> | </blockquote> | ||
2. Uncomment the <tt><replication-config></tt> section in <tt>src/main/webapp/WEB-INF/jboss-web.xml</tt> and configure the cache name, replication trigger and replication granularity. For more details about configuring WildFly session replication see: | |||
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | |||
:[[HTTP_Session_Replication#WildFly-Specific_Configuration|HTTP Session Replication - WildFly-Specific Configuration]] | |||
</blockquote> | |||
For more details on <tt>jboss-web.xml</tt> see: | |||
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | |||
:[[jboss-web.xml]] | |||
</blockquote> | |||
==Root Context== | |||
You can change the root context as follows: | |||
===On JBoss=== | |||
Simply deploy the WAR under the desired name or change the root context in <tt>jboss-web.xml</tt>. For more details on how to do that see [[Jboss-web.xml#Root_Context|<tt>jboss-web.xml</tt> root context]]. | |||
===On Tomcat=== | |||
Simply deploy the WAR under the desired name. |
Latest revision as of 18:11, 27 November 2017
Internal
Overview
A simple servlet that can be deployed within a JEE container and used to test continuity, load balancing, failover, session stickiness, session replication, etc. It has been tested to work with WildFly/EAP and with Tomcat. It was written to avoid container-specific dependencies. Its only dependencies are slf4j for logging and the Servlet API.
Source Code
Build
mvn clean package
Deploy
Copy ./target/session-servlet.war into the deployment directory of the application server.
Usage
Authentication
The default build produces a servlet that does NOT require authentication.
If you want authentication, do this (JBoss 5 procedure, may need to be updated for WildFly):
1. Un-comment web.xml section starting with <security-constraint> and ending with </security-role>.
2. Replace "admin" with a valid role. The replacement must be done in both places where <role-name> is mentioned. For example, if deployed on JBoss 5, pick up an appropriate role from $JBOSS_HOME/server/$JBOSS_PROFILE/conf/props/jmx-console-roles.properties.
3. Enable <security-domain> in jboss-web.xml and make sure it points to the correct one on the server.
HTTP Session Support
The servlet will NOT establish a HTTP session by default.
If you wish it to establish a session, call the /establish-session URL:
http://localhost:8080/session-servlet/establish-session
This will create a HTTP session and send the Set-Cookie JSESSIONID back to browser. If /establish-session is called repeatedly on an already established session, the application will warn, but otherwise nothing else will happen; enable-session is idempotent.
To get more information about the current session, use:
http://localhost:8080/session-servlet/describe-session
To invalidate the current session, use:
http://localhost:8080/session-servlet/invalidate-session
To write a String attribute into the session use:
http://localhost:8080/session-servlet/write/<attribute-name>/<attribute-value>
To read the value corresponding to previously written String attribute:
http://localhost:8080/session-servlet/read/<attribute-name>
To get the names of all attributes stored into the session, use:
http://localhost:8080/session-servlet/attributes
Note that the attribute count is displayed as part of the describe-session command output.
Application Type
The session servlet application allows for experiments with an application type, represented by the ApplicationType class. The ApplicationType can be modified into a backward compatible new version, incompatible new version, etc.
To write a String into ApplicationType instance, that will be in turn written into the session, use:
http://localhost:8080/session-servlet/write/apptype/<string-value>
To read the String value from the ApplicationType instance maintained by the session:
http://localhost:8080/session-servlet/read/apptype
Enable HTTP Session Replication
The application allows for experiments with distributable sessions. To enable session replication:
1. Uncomment the <distributable> configuration element in src/main/webapp/WEB-INF/web.xml. For more details on web.xml, see:
2. Uncomment the <replication-config> section in src/main/webapp/WEB-INF/jboss-web.xml and configure the cache name, replication trigger and replication granularity. For more details about configuring WildFly session replication see:
For more details on jboss-web.xml see:
Root Context
You can change the root context as follows:
On JBoss
Simply deploy the WAR under the desired name or change the root context in jboss-web.xml. For more details on how to do that see jboss-web.xml root context.
On Tomcat
Simply deploy the WAR under the desired name.