Reklamlar

Tomcatde JSESSIONID Yönetimi

Etiketler: tomcat tuckey seo apache
Tomcatde JSESSIONID Yönetimi
tomcatde-jsessionid-yonetimi
SORUN : Aynı Tomcat Context'i içerisinde mantıksal ayrı modüller bulunmaktaydı. SEO çalışmaları sonucunda her modul aynı context üzerinden sunulacak şekilde SEO standartlarına uygun farklı context path'lerden oluşacak URL'ler düzenlenecekti. Apache ModJk modülü kullanılarak istekler Apache üzerinden Tomcat'e aktarılmakta. Mevcut kodlarda minimum URL değişikliği yapacak şekilde Apache Rewrite kuralları oluşturuldu. Bu kurallar ContextPath'i değiştirecek kurallar. Tomcat tarafında ise URL Rewrite kuralları için TUCKET URLREWRITEFILTER kullanıldı.

Öncesinde :
http://www.mydomainname.com/ContextPath/Project-1/action.do
http://www.mydomainname.com/ContextPath/Project-2/action.do
şeklinde olan urller

http://www.mydomainname.com/Project-1/action.do
http://www.mydomainname.com/Project-2/action.do

şeklinde oldu.

Ama unutlan birşey vardı ki onlar da COOKIE standartlarıydı. Bir Cookie ya farklı domainlerde veya farklı cookie-path'lerde tanımsız oluyordu. Tomcat üzerinde uygulamamız ROOT web uygulaması olmadığı için JSESSIONID cookie'sinin COOKIE_PATH değeri "/ContextPath" olur. Browser URL ile JSESSIONID'sinin cookie-path'i uyumsuz olduğunu gördüğü an COOKIE'yi değerlendirmeyecektir. Bu da her seferinde farlı session-id'lerin oluşturulmasına ve farklı oturumların açılmasına neden olur.

Çözüm:

Ya projeyi ROOT web uygulaması olarak tanımlayacaktık. Bu da kodların içerisinde elle tanımlanmış URL'lerin tespit edilip düzeltilmesi ve yoğun bir test çalışmasını gerektirmekte. Bu istediğimiz şey değil.

En maaliyetsiz olan yöntem:

/Tomcat/conf/server.xml içerisinde Connector tanımlarına  emptySessionPath="true" özelliğini girmek olacak.

    <Connector port="NN" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="NN" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
emptySessionPath="true"
/>


Bu özellik ilgili Tomcat içerisindeki bütün uygulamaların JSESSIONID COOKIE_PATH'ni  "/" yapmaktadır. Böylelikle context path değişse bile session id değişmeyecektir.



Tartışma




ya da
CAPTCHA Images