Skip to main content

Change Tomcat JSESSION Cookie Name and Path


Sometime we have a scenario that two different tomcat application running on same domain,  and you want to share a session cookie in between them, there are two problem will come in this scenario i.e:

1. Session Cookie Name : As both the application have same cookie name i.e JSESSIONID , so its difficult to know which JSESSIONID belongs to which application , so in this scenario we need to change the Session cookie name.

2. Cookie Path : By default tomcat create a session cookie for the app context, due to which we can't share the cookies between two application , so we need to change the cookie path from  context to the root.

For doing the above point we can use ServletContextListener or web.xml file.

1. ServletContextListener


import javax.servlet.SessionCookieConfig;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyTestListener implements ServletContextListener 
{
    public void contextInitialized(ServletContextEvent sce) 
    {
        String comment = "This is my special cookie configuration";
        String domain = "root.com";
        String path = "/";
        boolean isSecure = true;
        boolean httpOnly = false;
        int maxAge = 30000;
        String cookieName = "MY_SESSION";
        SessionCookieConfig scf = sce.getServletContext().getSessionCookieConfig();
        scf.setComment(comment);
        scf.setDomain(domain);
        scf.setHttpOnly(httpOnly);
        scf.setMaxAge(maxAge);
        scf.setPath(path);                // ROOT path
        scf.setSecure(isSecure);
        scf.setName(cookieName); //JSESSION Cookie name

        }
    }
    public void contextDestroyed(ServletContextEvent sce) 
    {
    }
}

2. Web.xml

<session-config>
          <cookie-config> 
                <comment>This is my special cookie configuration</comment> 
                <domain> root.com</domain> 
                <http-only>false</http-only>
                <max-age>30000</max-age> 
                <path>/</path>                      // ROOT path
                <secure>true</secure> 
               <name>MY_SESSION</name> //JSESSION Cookie name
           </cookie-config> 
</session-config>




Comments

Popular posts from this blog

Deploy application at ROOT(/) context in Tomcat

Tomcat has its own application with the name "ROOT" that is runing in the main root (/) context path, So when ever you install new tomcat and try to accesss  http://localhost:8080/  then it will show you the default tomcat home page, If you want to deploy you application at  http://localhost:8080/  then there is two way to do this 1. ROOT.war : Create your application war file with the name ROOT.war and place it in the [TOMCAT_HOME]/webapps/ directory and restart tomcat services 2. Server.xml : If you can't change the war file name then in server.xml file there is one context tag  that is use to map your application on any context Remove the ROOT folder directory from [TOMCAT_HOME]/webapps/ Copy your application war file into the same directory , let suppose your application war file name is "app.war". Edit the server.xml file located at [TOMCAT_HOME]/conf/server.xml, and add the context tag < Context path = "/" docBase = "app&

Encode from JavaScript and Decode at Java.

if you have a senerio like you want to send encoded parameter values from your web page  and decode them  at server side then this blog may be help you. JavaScript: Before submit the form I am encoding all the value entered by user so that it can not be read by humanly, for encoding the values I have written a method named  encodeBase64 <script> function encodeBase64(input){         var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";         input = escape(input);         var output = "";         var chr1, chr2, chr3 = "";         var enc1, enc2, enc3, enc4 = "";         var i = 0;              do {             chr1 = input.charCodeAt(i++);             chr2 = input.charCodeAt(i++);             chr3 = input.charCodeAt(i++);                      enc1 = chr1 >> 2;             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);             enc3 = ((chr2 & 15) << 2