Önsöz:
Çoğu zaman uygulamaları dağıttığımızda, diğer sayfalara tıkladığımızda her zaman tekrar oturum açmamız gerektiğini fark ederiz.Bu genellikle bir oturum sorunudur.Sisteme erişildiğinde oturum sürdürülemez. Bu makale temel olarak tomcat kümesini yapılandırarak oturum paylaşımını uygular!
1. tomcat8080 ve tomcat9090 bağlantı noktalarını yapılandırın
Tomcat9090 yapılandırma dosyası server.xml'yi değiştirin
< Sunucu bağlantı noktası = "9005" shutdown = "KAPATMA" > < Bağlayıcı bağlantı noktası = "9090" protokol = "HTTP / 1.1" connectionTimeout = "20000" redirectPort = "8443" / > < Bağlayıcı bağlantı noktası = "9009" protokol = "AJP / 1.3" redirectPort = "8443" / >2. tomcat kümesini kurun
Tomcat yapılandırma dosyasını değiştirin, conf altında server.xml dosyasını açın ve aşağıdaki satırı bulun
< Motor adı = "Catalina" defaultHost = "localhost" >Herhangi bir değişiklik yapmaya gerek yok, aşağıdaki kodu bu satırın altına ekleyin:
< Küme className = "org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions = "8" > < Yönetici className = "org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown = "false" notifyListenersOnReplication = "true" / > < Kanal className = "org.apache.catalina.tribes.group.GroupChannel" > < Üyelik className = "org.apache.catalina.tribes.membership.McastService" adres = "228.0.0.4" bağlantı noktası = "45564" frekans = "500" dropTime = "3000" / > < Alıcı className = "org.apache.catalina.tribes.transport.nio.NioReceiver" adres = "otomatik" bağlantı noktası = "4000" autoBind = "100" selectorTimeout = "5000" maxThreads = "6" / > < Gönderen className = "org.apache.catalina.tribes.transport.ReplicationTransmitter" > < Taşıma className = "org.apache.catalina.tribes.transport.nio.PooledParallelSender" / > < /Gönderen > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" / > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" / > < /Kanal > < Valve className = "org.apache.catalina.ha.tcp.ReplicationValve" filter = "" / > < Valve className = "org.apache.catalina.ha.session.JvmRouteBinderValve" / > < Deployer className = "org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir = "/ tmp / war-temp /" deployDir = "/ tmp / war-deploy /" watchDir = "/ tmp / war-listen /" watchEnabled = "false" / > < ClusterListener className = "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" / > < ClusterListener className = "org.apache.catalina.ha.session.ClusterSessionListener" / > < /Küme >Bu, tomcat ile birlikte gelen küme yapılandırmasıdır. Resmi tomcat belgelerinde cluster-howto.html'deki ilgili önlemlere bakın. Bunlardan birinin not edilmesi gerekir: web.xml'nizin < dağıtılabilir/ > element
Açıkçası bu, web projesinin web.xml dosyasının < dağıtılabilir/ > Bu öğe, içe aktarılan web projesinde değiştirildi.
3. Projeyi değiştirin
\ Tomcat \ webapps \ altında yeni bir testkümesi klasörü oluşturun, SessionID'yi elde etmek için testcluster altında yeni bir index.jsp oluşturun
< html > < baş > < Başlık > Başlık < /Başlık > < meta http-equiv = "İçerik Türü" content = "text / html; charset = gb2312" / > < / kafa > < vücut > Oturum kimliği: < % = session.getId ()% > < BR > OturumIP: < % = request.getServerName ()% > < BR > SessionPort: < % = request.getServerPort ()% > < % out.println ("Bu Tomcat Sunucusu 8080"); % > < /vücut > < / html >Testcluster altında bir WEB-INF klasörü oluşturun, index.jsp'yi işaret etmek için WEB-INF altında yeni bir web.xml oluşturun ve ekleyin < dağıtılabilir/ > element
< ? xml version = "1.0" encoding = "UTF-8"? > < ! - PublicCMS Servlet3.0 teknolojisini kullanır, Web.xml artık tüm projenin girişi değildir, config.initializer. * Başlatıcı, projenin giriş sınıfıdır ve config. * Config, Spring yapılandırmasıdır - > < web uygulaması xmlns: xsi = " xmlns = " xsi: schemaLocation = " id = "WebApp_ID" version = "3.0" > < ekran adı > uzaktan Eğitim < /ekran adı > < dağıtılabilir/ > < hoşgeldin-dosya-listesi > < hoşgeldin dosyası > index.jsp < / hoşgeldin-dosyası > < / welcome-file-list > < /internet uygulaması >Not: \ conf \ content.xml, WEB-INF altına yerleştirilmek üzere web.xml ile yapılandırıldığından, web.xml'nin WEB-INF'e yerleştirilmesi gerekir.
D: \ tomcat cluster \ tomcat8080 \ conf \ content.xml
< Bağlam > < ! - Varsayılan izlenen kaynaklar seti - > < İzlenen Kaynak > WEB-INF / web.xml < / WatchedResource > < ! - Tomcat yeniden başlatmalarında oturum kalıcılığını devre dışı bırakmak için bu açıklamayı kaldırın - > < ! - < Yönetici yol adı = "" / > - > < ! - Comet bağlantı takibini etkinleştirmek için bu açıklamayı kaldırın ( oturumun sona ermesinin yanı sıra web uygulaması yaşam döngüsünde) - > < ! - < Valve className = "org.apache.catalina.valves.CometConnectionManagerValve" / > - > < / Bağlam >4. tomcat'i başlatın ve test edin
Tomcat'i başlatın:
D: \ tomcat cluster \ tomcat8080 \ bin \ startup.bat
D: \ tomcat cluster \ tomcat9090 \ bin \ startup.bat
Test adresi:
http: // localhost: 8080 / testcluster / index.jsp
http: // localhost: 9090 / testcluster / index.jsp
Her tarayıcının farklı bir SessionID'si olacaktır, ancak aynı tarayıcı tarafından farklı portlardan elde edilen SessionID aynıdır.
Ek: Tomcat kümesi yapılandırma parametreleri
Tomcat kümesinin yukarıdaki yapılandırmasının yalnızca içinde olması gerekir < Motor > Düğüm veya < Ev sahibi > Kümelemeyi desteklemek için düğümün içine aşağıdaki kodu ekleyin:
< Küme className = "org.apache.catalina.ha.tcp.SimpleTcpCluster" / >Bu yapılandırma, tümü bir arada oturum çoğaltmayı etkinleştirecek ve oturum artışını çoğaltmak için DeltaManager'ı kullanacaktır. Hepsi bir arada yöntemi, oturumun kümedeki diğer tüm düğümlere çoğaltılacağı anlamına gelir. Küçük kümeler için bu Bu yöntem çok uygundur, ancak daha büyük kümelerde kullanılmasını önermiyoruz (birçok tomcat düğümü vardır. Örneğin, düzinelerce düğüm ve üstü ...) Ayrıca, delta artımlı yönetici kullanırken, hatta bazıları Düğüm, uygulamayı konuşlandırmaz ve oturum tüm düğümlere kopyalanır.
Daha büyük bir kümede oturum çoğaltma gerçekleştirmek için, BackupManager kullanmanız gerekir. Bu yönetici yalnızca oturum verilerini bir yedekleme düğümüne ve yalnızca ilgili uygulamanın konuşlandırıldığı düğümlere kopyalar. BackupManager'ın dezavantajı: Testten sonra, performans delta yöneticisi kadar iyi değildir .
İşte bazı önemli varsayılan değerler:
1. Varsayılan Çoklu Yayın adresi: 228.0.0.4
2. Varsayılan Çok Noktaya Yayın bağlantı noktası: 45564 (Bağlantı noktası numarası ile adresin birleşimi, küme ilişkisini belirler ve aynı küme olarak kabul edilir).
3. Varsayılan yayın IP'si java.net.InetAddress.getLocalHost (). GetHostAddress () (127.0.0.1'e yayın yapmadığınızdan emin olun, bu yaygın bir hatadır)
4. Çoğaltma mesajlarını dinlemek için varsayılan TCP bağlantı noktası, 4000-4100 aralığındaki ilk kullanılabilir sunucu soketidir.
5. İki dinleyici yapılandırılmıştır: ClusterSessionListener ve JvmRouteSessionIDBinderListener
6. İki durdurucu yapılandırılmıştır: TcpFailureDetector ve MessageDispatch15Interceptor
Pek çok insan kimsenin teknik makaleleri okumadığını söylüyor. Her neyse, onları paylaşırsan en azından okuyabilirsin ~