2016-09-19 20 views
8

İki HTTP sunucusu tarafından sunulan kullanıcı arayüzüne sahibim. Bu nedenle, HTTP oturumunu her iki sunucudan da temizlemem gerekiyor. Oturum kapatma işlemi için basit ancak oturum zaman aşımı kullanım durumu için nasıl yapılacağı açık değil.Bir tarayıcıdan bir oturum zaman aşımına uğradığında HTTP isteği

Sunucu tarafındaki bildirim, HttpSessionBindingListener Getting notification when bounded/unbounded to a HTTP session aracılığıyla mümkündür. Ancak müşteri sitesini bu konuda nasıl bilgilendirebilirim? İkinci sunucuda bir oturum çerezini temizleyebilmek için isteği tarayıcıdan ikinci sunucuya göndermem gerekiyor ve bu yüzden sunucu tarafından istek gönderemiyorum.

Eklenen

Bir sunucu Tomcat 8, ikinci sunucu Apache, sunucusudur. UI ile çözmek istiyorum geri arama mümkün (Tomcat HTTP servlet sunucusundan).

Apache HTTPD (Apache) belgelerine
+0

Bu daha fazla sunucu yapılandırması değil mi? Sunucuları oturumları paylaşacak şekilde yapılandırmanın bir yolu olduğunu düşündüm. Sürüm de dahil olmak üzere kullandığınız sunucuya daha fazla ayrıntı ekleyebilir misiniz? – Kieveli

+0

İyi soru. Daha fazla bilgi için bekliyorum. Bu yaklaşımı, kümelenmiş oturumları yönetmek için redis gibi bir dış mağaza kullanan Spring Session (kümelenmiş: http://docs.spring.io/spring-session/docs/current/reference/html5/#httpsession-redis) ile karşılaştırdım. Not: Bu tür sorular için SO üzerinde bir abone düğmesi olsaydı. – code4kix

+0

Kieveli, Herhangi bir oturum paylaşımını yapılandırmak istemiyorum. Bir sunucu Tomcat 8, ikinci sunucu Apache HTTPD sunucusudur. Bunu UI ile çözmek istiyorum Geri arama mümkün (Tomcat HTTP sunucu sunucusu üzerinden). code4kix, soruya abone olmak için sadece yıldız düğmesine basın – Michael

cevap

4

: Sen kendi modülünü yazabilirsiniz o zaman oturumları silmek için bu modülü kullanabilirsiniz

https://httpd.apache.org/docs/2.4/mod/mod_session.html#integration

  • Harici Uygulamalar ile

    entegre Oturumlar Tomcat onlara harcadıklarını düşünüyor.

  • Hem Tomcat hem de Apache için harici bir oturum veritabanı kullanabilirsiniz (ör. MySQL'de), her iki sunucu da kullanıcıları doğrulayacaktır. Bir oturumu silmek, yalnızca veritabanından girişi silmeyi gerektirir.
  • Tek başına bir uygulama olarak: Dokümanlar durumdayken, oturum dosyalarını bulma ve bunlara erişme, bunları kesme ve düzenleme işlemlerini gerçekleştirme işini üstünüzdedir. Tomcat ve Apache farklı makinelerdeyse, Apache kutusunda bir dinleyiciye sahip bir temsilciniz olabilir ve Tomcat'ın aracı verilerini oturum verilerini silmesini isteyebilirsiniz.
  • Apache genellikle PHP ile gider ve ayrıca veritabanları da vardır. Her ikisinin de ele almaları için kendi seansları olabilir.
+0

Oturumları veritabanı üzerinden yönetmek istiyorum. Yukarıdaki cevabı bulamıyorum – Michael

+1

Kod yazmam ama yine de apache httpd kutusunda (veya apache'nin çatalı) çalışan bağımsız bir uygulama isteyeceksiniz. Bir bağlantı noktasında dinlemesini sağlayın (yuva veya java aramaları). Tomcat bir oturumu sildiğinde, bu programı çağırmak zorundadır, program eşleşen apache httpd oturumunu siler. Kolay çerçeve çağrıları yok, herşeyi yapmanız gerekiyor. – gia

+0

Tarayıcı aracılığıyla geri aramaya ihtiyacım var. Ben sunucu tarafında çözüm ton geliştirebilir ama bir tarayıcı çözümü – Michael

0

Denemeniz gereken birkaç yaklaşım vardır.

@ Kwebble tarafından belirtildiği gibi
  1. , Tomcat oturum zaman aşımı üzerinde Apache sunucusuna bir çağrı yapmak ve oturumu geçersiz/çıkış için sorun.

  2. Tomcat'ta oturum zaman aşımına uğrarsa, kullanıcı arabirimi herhangi bir istekte bulunduğunda bunu öğrenecektir. Şimdi UI'den, oturumu kapatmak/geçersiz kılmak için Apache sunucusuna bir çağrı yapın.

İlgili konular