2012-08-23 2 views
2

사용자 지정 세션 저장소를 갖기 위해 사용자 지정 sessionManager (NoSqlSessionManager 확장) 및 sessionIdManager를 구현했습니다. 내 코드 (필요한 항아리와 함께)는 ${jetty.home}/lib/ext (버전 8.1.4 BTW)에 들어갔다. start.ini으로 내가 다른 다음과 같은 내용으로 구성 파일을 포함 :부두 및 사용자 지정 sessionIdManager

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

부두의 시작과 sessionIdManager 작동 것으로 보인다. 적어도 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

꽤 많은 디버깅을 한 후에 문제의 근원은 <Get name="server">입니다. 대부분 Server 클래스에 대한 참조는 배포 프로세스의 후반부에 WebAppContext에 주입됩니다. 그래서 Server를 가져 오는 대신에 <Ref id="Server">으로 참조하고 트릭을 만들었습니다.

+0

그래도 문제가 해결되지 않으면이를 수락해야합니다. – Gray

관련 문제