カスタムセッションストレージを使用するために、(拡張してNoSqlSessionManager
)カスタムsessionManagerとsessionIdManagerを実装しました。私のコード(および必要なjarファイル)は${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>
Jettyが起動し、sessionIdManagerが機能しているように見えます。少なくともscavenge()
メソッドが呼び出されています。ここまでは順調ですね。次のステップは、カスタムsessionManagerを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>
ただし、Jettyを起動すると、次のようになります。
WARN:oejx.XmlConfiguration:Config error at <Get id="customIdMgr" name="sessionIdManager"/> java.lang.NullPointerException
...これは、オーバーレイが処理されるときに、メインの桟橋構成に登録されていたオブジェクトがなくなったことを意味します。
私がここで間違っていることについて何か考えはありますか?