2012-03-01 10 views
22

मेरे वेबपैम को टॉमकैट 7 में अपग्रेड करने के बाद कोई समस्या है। मेरा सत्र लॉग इन करने के बाद null पर जायेगा और कुछ भी करने का प्रयास करेगा (अनुरोध सबमिट कर रहा है)। मैंने पढ़ा है कि निम्नलिखित की स्थापना में मदद कर सकते हैं:टॉमकैट 7 - मैं 'सिस्टम गुण' कहां सेट करूं?

org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false 

किसी को भी, जहां इस सेट करने के लिए पता है? क्या इसे web.xml, context.xml या कहीं और में सेट किया जाना चाहिए?

org.apache.catalina.STRICT_SERVLET_COMPLIANCE 
+0

मैंने निम्नलिखित को पढ़ा, http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html और मैंने नहीं किया इसे कहां सेट करना है इस पर कोई जानकारी देखें। मुझे बस यह जानने की जरूरत है कि FWD_SLASH_IS_SEPARATOR को गलत तरीके से कैसे सेट करें। – LuckY07

+0

इसके अलावा, हम एक विंडोज वातावरण पर चल रहे हैं। – LuckY07

+0

@ माइकल - जहां RUNNING.txt में यह दिखाता है कि FWD_SLASH_IS_SEPARATOR सेट करने के लिए कहां है? क्या आप इस बात का जिक्र कर रहे हैं कि यह आपको कैसे दिखाता है कि setenv.bat में चर (विंडोज़ में) कैसे सेट करें? – LuckY07

उत्तर

3

समाधान:

दूसरी बात मैं जाँच करना चाहते हैं निम्नलिखित है

sessionCookiePathUsesTrailingSlash="false" 

हम वास्तव में पता लगा है कि यह कैसे हल करने के लिए। यह एक टोमकैट 7 सेटिंग थी जिसे हमें सेट करने की आवश्यकता थी। हम server.xml में रखा, टैग के तहत इस प्रकार है:

<Context path="/test" reloadable="true" docBase="c:\webapp\test" 
workDir="c:\webapp\test" sessionCookiePathUsesTrailingSlash="false"/> 

जब हम समस्या को दूर करने गए थे और हमने पाया यह webapp नाम के बाद एक \ बैकस्लैश डाल रहा था हमारे परीक्षण webapp के लिए हां, कुकीज़ पथ पर देख रहे हैं यह /test के बजाय /test/ पर पथ सेट कर रहा था। इससे समस्याओं का एक गुच्छा हुआ।

क्या किसी और को टॉमकैट 7 में इस सेटिंग से निपटना पड़ा है? या एक समान समस्या है?

3

आप इन सिस्टम गुणों को कमांड लाइन में सेट कर सकते हैं जो टोमकैट शुरू करता है। उदाहरण के लिए, आप निम्नलिखित सामग्री के साथ Tomcats bin फ़ोल्डर में फ़ाइल setenv.bat (setenv.sh पर यदि आप लिनक्स पर कर रहे हैं) हो सकता है:

set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m" 

इस फ़ाइल में बिलाव के लिए गुण स्थापित करने की पसंदीदा तरीका है।

अब, FWD_SLASH_IS_SEPARATOR डिफ़ॉल्ट रूप से false पर सेट है। यदि आप STRICT_SERVLET_COMPLIANCE से true पर सेट करते हैं, तो FWD_SLASH_IS_SEPARATOR का मान true (और कुछ अन्य गुणों के मान) पर भी सेट किया जाएगा। हालांकि, आप इसे स्पष्ट रूप से false पर सेट कर सकते हैं, उदा। अपने setenv फ़ाइल में निम्न का उपयोग कर ठीक है:

-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true 
-Dorg.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false 

यह भी है कि मैं क्या सुझाव है कि जब कोई STRICT_SERVLET_COMPLIANCEtrue करने के लिए सेट, हमेशा FWD_SLASH_IS_SEPARATOR निष्क्रिय करने के लिए। अन्यथा, कुकी पथ मान उद्धृत किया जाएगा (उदा। "\") और ओपेरा को छोड़कर आज के सभी ब्राउज़रों को यह पहचान नहीं है और उदा। सत्र को ट्रैक करने में विफल।

25

आप में

apache-tomcat-7.0.33\conf\catalina.properties 

फाइल सिस्टम गुण के किसी भी सेट कर सकते हैं। इस फ़ाइल में अपनी प्रविष्टि जोड़ना आपकी समस्या का समाधान करना चाहिए।

उदा।

environment=local 
10

आप/bin निर्देशिका में setenv.sh फ़ाइल बनाकर सिस्टम गुणों को टॉम बिल्ली में सेट कर सकते हैं। मैंने सिस्टम गुणों को सेट करने के लिए निम्न कार्य किया है।

export JAVA_OPTS="-Dmyprojectvar.subname=value -Danothervariable=value -Danother.variable=value" 

याद रखें:

export JAVA_OPTS और = और प्रतीक & के बीच कोई अंतराल अलग, . का उपयोग किया जाता है नहीं है।

अब, टोमकैट शुरू करने के लिए अपने catalina.sh चलाएं।

+2

दुर्भाग्यवश आप ** गुप्त ** मान (उदा। ट्रस्टस्टोर पासवर्ड) सेट नहीं कर सकते हैं, जिस तरह से उन्हें लॉग इन और 'ps' या पढ़/proc/*/cmdline चला सकते हैं। Catalina.properties में उन्हें परिभाषित करना उस रिसाव से बचाता है। यह एक कारण है कि सर्वलेट कोड को कॉन्फ़िगर करने के लिए कस्टम सिस्टम गुणों का उपयोग करना _bad idea_ है। इसके बजाय संदर्भ पैरामीटर का प्रयोग करें। –

+1

@ मार्कवुड द्वारा उठाए गए चेतावनी के अलावा, यह तकनीक केवल तभी काम करेगी जब स्टार्टअप स्क्रिप्ट का उपयोग करके टॉमकैट लॉन्च किया गया हो। यदि आप टोमकैट लॉन्च करने के लिए एक और सुविधा का उपयोग करते हैं (उदा। माइक्रोसॉफ्ट विंडोज़ "सेवा" के रूप में), 'bin/setenv.sh | bat' जैसी स्क्रिप्ट को अनदेखा किया जाता है। 'Catalina.properties' का उपयोग करना सुनिश्चित करता है कि सिस्टम गुणों को टॉमकैट लॉन्च करने के तरीके के बावजूद सेट किया गया है। –

1

आप ग्रहण में चल रहे एक सर्वर के लिए चर सेट करने के लिए कोशिश कर रहे हैं:

  • सुनिश्चित करें कि आपके सर्वर चयनित है

    1. करें भागो> चलाएँ विन्यास
    2. करें पर्यावरण टैब
    3. क्लिक करें 'नई 'एक नया चर जोड़ने के लिए
  • संबंधित मुद्दे