/ / जेट्टी और कस्टम सत्रभार प्रबंधक - जेट, जेटी, सत्र प्रबंधन

जेटी और कस्टम सत्र आईडी प्रबंधक - जावा, जेटी, सत्र प्रबंधन

कस्टम सत्र भंडारण करने के लिए मैंने एक कस्टम सत्र प्रबंधक (विस्तार करके) लागू किया है NoSqlSessionManager) और सेशनमैडमैन। मेरा कोड (जार के साथ इसकी आवश्यकता है) में चला गया ${jetty.home}/lib/ext (संस्करण 8.1.4 BTW)। साथ में start.ini मैं निम्नलिखित सामग्री के साथ एक और विन्यास फाइल शामिल करता हूं:

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Set name="sessionIdManager">
<New id="customIdMgr" class="com.me.customSessionIdManager">
<Arg>...</Arg>
</New>
</Set>
</Configure>

जेटी शुरू होता है और सत्रमैडमैन काम करता हुआ दिखाई देता है। कम से कम scavenge() विधि कहा जा रहा है। अब तक सब ठीक है। अगला कदम मेरे कस्टम सत्र प्रबंधक को इसके साथ जोड़ना है WebAppContext मेरी पसंद का। मैंने इसे ओवरले टेम्पलेट के भीतर किया था (overlay.xml) निम्नलिखित सामग्री के साथ:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Get name="server">
<Get id="customIdMgr" name="sessionIdManager"/>
</Get>


<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler">
<Arg>
<New class="com.me.customSessionManager">
<Set name="sessionIdManager"><Ref id="customIdMgr"/></Set>
</New>
</Arg>
</New>
</Set>

</Configure>

हालाँकि जेट्टी शुरू करने के दौरान मुझे यह मिलता है:

WARN:oejx.XmlConfiguration:Config error at <Get id="customIdMgr" name="sessionIdManager"/> java.lang.NullPointerException

... जिसका तात्पर्य है कि जो वस्तु मुख्य जेटी विन्यास में पंजीकृत थी, वह अब चली गई है जब ओवरले संसाधित किए जाते हैं।

कोई विचार क्या मैं यहाँ गलत कर रहा हूँ?

उत्तर:

जवाब के लिए 2 № 1

काफी डिबगिंग के बाद यह पता चला, समस्या की जड़ है <Get name="server"> वापस आता है। सर्वर क्लास के संदर्भ में शायद सबसे ज्यादा तैनाती प्रक्रिया में बाद में WebAppContext में इंजेक्ट किया जाता है। इसलिए सर्वर पाने के बजाय मैंने इसे संदर्भित किया <Ref id="Server"> और वह चाल चली।