मुझे एक सर्वलेट या फ़िल्टर क्लास लिखने की आवश्यकता है जो org.apache.catalina.connector.Request ऑब्जेक्ट तक पहुंच प्राप्त कर सकता है, जो मेरे सर्वलेट को दिए गए RequestFacade ऑब्जेक्ट में लपेटा गया है। कास्टिंग काम नहीं करता है, क्योंकि RequestFacade अनुरोध का उप-वर्ग नहीं है।मैं org.apache.catalina.connector.Momcat ऑब्जेक्ट को टोमकैट में कैसे प्राप्त करूं?
कारण मुझे इसकी आवश्यकता है क्योंकि मैं अनुरोध की setRequestedSessionId() विधि को कॉल करने का प्रयास कर रहा हूं, और यह स्पष्ट रूप से एचटीपी सर्वलेट spec का हिस्सा नहीं है। मुझे ऐसा करने का कारण यह है क्योंकि सत्र आईडी को JSESSIONID की तुलना में किसी भिन्न नाम के तहत URL में शामिल किया जा रहा है। मैं यूआरएल या पैरामीटर का नाम नहीं बदल सकता, इसलिए मैं सत्र आईडी निकालने और Request.setRequestedSessionId() पर कॉल करके सही सत्र के साथ अनुरोध को जोड़ने का प्रयास कर रहा हूं।
मैंने वास्तव में वाल्व सबक्लास का उपयोग करके समस्या हल कर ली है, लेकिन मुझे वाल्व का उपयोग करना पसंद नहीं है क्योंकि जहां तक मैं कह सकता हूं, मुझे पैकेजिंग के बजाय टॉमकैट/सर्वर/कक्षा निर्देशिका में अपना वाल्व सबक्लास इंस्टॉल करना होगा यह मेरे बाकी वेबपैप के साथ है। यदि विभिन्न सर्वलेट कंटेनरों में ऐसा करने का एक पोर्टेबल तरीका था, तो यह बहुत अच्छा होगा, लेकिन फिलहाल मुझे इस टोमकैट-विशिष्ट बनाने के लिए इस्तीफा दे दिया गया है।
यहाँ काम कर रहे वाल्व कोड है:
public class SessionSetter extends ValveBase {
public void invoke(Request request, Response response) throws IOException, ServletException {
String sessionId = request.getParameter("whatever");
request.setRequestedSessionId(sessionId);
}
}
वहाँ किसी तरह एक सर्वलेट में एक ही बात करते हैं या फिल्टर करने के लिए है? या मेरे आवेदन में वाल्व क्लास को पैकेज करने का कोई तरीका है .war फ़ाइल? http://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html#Sessions:
तुम क्यों कि क्या ज़रूरत है ? – Bozho
मुझे ऐसा करने की ज़रूरत क्यों है? मैंने सोचा कि मैंने दूसरे पैराग्राफ में कारण बताए हैं, कृपया मुझे बताएं कि मैंने किस भाग को अच्छी तरह से समझाया नहीं है। –
यदि आप टॉमकैट 6 का उपयोग कर रहे हैं तो यह एक विकल्प हो सकता है जिसे आप देख सकते हैं: http://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html# सत्र। आप सिस्टम गुणों का उपयोग कर सत्र आईडी पैरामीटर के लिए उपयोग किए गए नाम बदल सकते हैं। यह टॉमकैट 7 के लिए उपलब्ध नहीं है, जहां तक मैं कह सकता हूं (मुझे लगता है कि सर्वलेट spec कि टीसी 7 उपकरण नाम बदलने के बारे में कठोर है)। – matt