2009-05-18 13 views
46

मुझे एकल भौतिक बॉक्स में एकाधिक टॉमकैट सर्वर चलाने की आवश्यकता है। ब्राउज़र से इन तक पहुंचते समय, जब उपयोगकर्ता अनुप्रयोगों के बीच स्विच करता है, तो इसके परिणामस्वरूप उपयोगकर्ता पहले पहुंच एप्लिकेशन को लॉग आउट कर देता है। यह JSESSIONID कुकी संघर्ष के कारण है।कुकी JSESSIONID नाम बदलना

एक संभावित समाधान प्रत्येक अनुप्रयोग को विभिन्न संदर्भ में चलाने के लिए है। दुर्भाग्यवश, मेरे एप्लिकेशन संदर्भ पथ सेटिंग में काम नहीं करेंगे क्योंकि अनुरोधों में से किसी भी संसाधन को access.getContextPath() के साथ उपयोग नहीं किया जाता है।

यह मुझे संघर्ष को हल करने के लिए कुकी JSESSIONID का नाम बदलने के लिए छोड़ देता है। क्या इसे करने का कोई तरीका है? यदि हां, तो कैसे?

आशा है कि मैं अपने प्रश्न बताते हुए स्पष्ट हूं।

नोट: मेरा सभी एप्लिकेशन एक ही मशीन में अलग-अलग बंदरगाह में चल रहा है।

+3

एक ही बंदरगाह पर एक ही समय में एक ही बंदरगाह पर "एकाधिक टॉमकैट सर्वर" चलाने के लिए आप कैसे प्रबंधित कर रहे हैं? –

+2

@ हैरीलाइम: प्रॉक्सी सर्वर के साथ हो सकता है। – Thilo

उत्तर

4

मैं यह संभव है इस बिंदु पर नहीं लगता है - देखना https://issues.apache.org/bugzilla/show_bug.cgi?id=42419

अंतिम प्रविष्टि में कहा गया है, "यह 5.5.x में तय किया गया है और 5.5.28 के बाद में शामिल किया जाएगा" - जो अगले अंक है रिलीज - 5.5.27 वर्तमान रिलीज है।

+0

इसे खोदने के लिए धन्यवाद। ऐसा लगता है कि मेरे लिए केवल विकल्प छोड़ा गया है मौजूदा टोमकैट स्रोत को संशोधित करना। बग/फीचर रिपोर्ट स्पष्ट रूप से मेरी सटीक आवश्यकता और समाधान बताती है। उत्तर के लिए धन्यवाद। – ramanr

2

यह 100% सुनिश्चित नहीं है कि यह काम करेगा, लेकिन आप jvmRoute विशेषता का उपयोग कर सकते हैं, जो आमतौर पर लोड बैलेंसर्स के लिए भार-संतुलित/क्लस्टर वातावरण में उपयोग किया जाता है ताकि नोड्स को अलग-अलग बता सकें। उदाहरण:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1"> 

यह एक jsessionid मूल्य है कि "ABCDEF123456.node1" की तरह लग रहा पैदा खत्म हो जाएगा।

Documentation link

+0

कुकी के मूल्य के बारे में, इसका नाम नहीं, है ना? –

13

दो निम्न सिस्टम गुणों का उपयोग करके इसे आसानी से हासिल किया जा सकता है।

  • org.apache.catalina.SESSION_COOKIE_NAME
  • org.apache.catalina.SESSION_PARAMETER_NAME

किसी भी मूल्य से ऊपर गुणों के पारित किया जा सकता मूलभूत मूल्यों को बदलने के लिए।

कुछ नमूना स्क्रिप्ट के साथ complete details पाया गया।

+1

यह अब Tomcat7 + के लिए काम नहीं करता है। अब आप इसे कॉन्टेक्स्ट कॉन्फ़िगरेशन में सेट कर सकते हैं, @ टाइमकिंगमैन का जवाब देखें। – Thilo

+0

मैंने इसे टॉमकैट 6 पर किया था, लेकिन फिर भी मुझे एक ही समस्या मिल रही है –

+0

जेटी के बारे में क्या? – gstackoverflow

12

निम्नलिखित context.xml फ़ाइल में Tomcat7 पर मेरे लिए काम करता है:

<Context path="/yourApp" sessionCookieName="custom_session_id"> 
45

सब कुछ सर्वलेट एपीआई 3.0 के साथ बहुत सरल है।

अब आप इसे अपने web.xml में कॉन्फ़िगर कर सकते हैं:

<session-config> 
    <cookie-config> 
     <name>MY_JSESSIONID_YAHOOOOOO</name> 
    </cookie-config> 
</session-config> 

यह है कि!

+0

सबसे अच्छा जवाब! – x4k3p

संबंधित मुद्दे