/ / Jetty e custom sessionIdManager - java, jetty, gerenciamento de sessão

Jetty e sessionIdManager personalizado - java, jetty, gerenciamento de sessão

Para ter um armazenamento de sessão personalizado, implementei um sessionManager personalizado (estendendo NoSqlSessionManager) e sessionIdManager. Meu código (junto com os frascos que ele requer) entrou em ${jetty.home}/lib/ext (versão 8.1.4 BTW). Com start.ini Eu incluí outro arquivo de configuração com o seguinte conteúdo:

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

O Jetty é iniciado e o sessionIdManager parece estar funcionando. Finalmente scavenge() método está sendo chamado. Por enquanto, tudo bem. O próximo passo é associar meu sessionManager personalizado ao WebAppContext da minha escolha. Eu fiz isso dentro do modelo de sobreposição (overlay.xml) com o seguinte conteúdo:

<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>

No entanto, ao iniciar o Jetty, recebo isto:

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

... o que implica que o objeto que foi registrado na configuração principal do jetty agora desapareceu quando as sobreposições são processadas.

Alguma ideia do que estou fazendo errado aqui?

Respostas:

2 para resposta № 1

Depois de muita depuração, a raiz do problema é <Get name="server"> retorna null. A referência mais provável à classe Server é injetada no WebAppContext muito mais tarde no processo de implantação. Então, ao invés de obter o Server i referenciá-lo com <Ref id="Server"> e isso fez o truque.