2017-09-20 18 views
1

jetty 9.4로 업그레이드 한 후 org.eclipse.jetty.server.session.HashSessionManager에 ClassNotFoundException이 발생합니다. 나는 FileSessionDataStore을 사용할 필요가 있다고 생각하는데, 어떻게 생각하는지 모르겠다. SessionHandler.jetty로 업그레이드 9.4 HashSessionManager 바꾸기

내가 현재 가지고있는 구성은 : 내가해야 할 일을 볼 수 없습니다

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    ... 
    <Set name="sessionHandler"> 
     <New class="org.eclipse.jetty.server.session.SessionHandler"> 
      <Arg> 
       <New class="org.eclipse.jetty.server.session.HashSessionManager"> 
        <Set name="storeDirectory">my/store/path</Set> 
       </New> 
      </Arg> 
     </New> 
    </Set> 
</Configure> 

, SessionHandlerSessionDataStore을하지 않지만, SessionCache가 설정 될 수 있지만처럼 보인다 SessionCache의 구현은 생성자에서 SessionHandler을 원합니다. XML에서이를 수행하는 방법을 알지 못합니다.

답변

5

jetty-9.4 세션 아키텍처에서 SessionHandlerSessionCache이며, 선택적으로 SessionDataStore을 사용합니다.

프로그래밍 방식의 예는 OneServletContextWithSession을 참조하십시오.

이 예제에서는 NullSessionDataStore을 사용하지만 디스크에 세션을 저장할 수있는 이전 HashSessionManager 기능을 대체하는 원칙 인 FileSessionDataStore과 동일합니다.

제티 문서에는 on changes from previous versions of Jetty session management to the 9.4 style 정보가 포함되어 있습니다.

설명서의 링크를 따라 가면 새로운 세션 아키텍처에 대한 자세한 정보도 얻을 수 있습니다.

설명서에 설명 된대로 배포판에서 jetty-9.4를 실행할 때 세션을 구성하는 가장 쉬운 방법은 적절한 모듈을 활성화하는 것입니다. 그러나 임베디드를 실행 중이거나 xml에있는 특정 웹 애플리케이션에 대한 세션 관리를 설정하려는 경우 FileSessionDataStore을 설정하는 코드 예는 다음과 같습니다.

<Get id="sh" name="sessionHandler"> 
    <Set name="sessionCache"> 
     <New class="org.eclipse.jetty.server.session.DefaultSessionCache"> 
      <Arg><Ref id="sh"/></Arg> 
      <Set name="sessionDataStore"> 
      <New class="org.eclipse.jetty.server.session.FileSessionDataStore"> 
       <Set name="storeDir">/tmp/sessions</Set> 
      </New> 
      </Set> 
     </New> 
    </Set> 
</Get> 
1

아 내가 그것을했다 생각, 그것으로 결국 꽤되지 않습니다 :이되지 않는 경우

<Set name="sessionHandler"> 
    <New class="org.eclipse.jetty.server.session.SessionHandler"> 
    </New> 
</Set> 

<Call name="getSessionHandler" id="sessionHandler" /> 

<Ref refid="sessionHandler"> 
    <Set name="SessionCache">  
     <New class="org.eclipse.jetty.server.session.DefaultSessionCache"> 
      <Arg> 
       <Ref refid="sessionHandler"/> 
      </Arg> 
      <Set name="SessionDataStore"> 
       <New class="org.eclipse.jetty.server.session.FileSessionDataStore"> 
         <Set name="StoreDir">my/store/path</Set> 
       </New> 
      </Set> 
     </New> 
    </Set> 
</Ref> 

은 내가 http://useof.org/java-open-source/org.eclipse.jetty.server.session.FileSessionDataStore

에서 찾을 순수 자바 예를 읽기 위해 쉽게 따라 부두 전문가에게 바르게 답하십시오. 다른 사람들을 오도하지 않도록 답변을 편집 해 드리겠습니다.