2011-09-27 83 views
1

我想配置Jetty在磁盤上保留會話,以便重新啓動Jetty不會丟失會話,但通過閱讀文檔我還沒有得到它的工作。如何使用Jetty 7和jetty-maven-plugin保持會話?

我使用Jetty Maven pluginorg.mortbay.jetty:jetty-maven-plugin 7.4.3.v20110701)運行Jetty。

Enabling Persistence for the Maven Jetty Plugin告訴成立HashSessionManager在插件的sessionHandler配置部分,但例如,有似乎是老maven-jetty-plugin,而不是新jetty-maven-plugin

我試過有固定的類名像這樣(我也不得不添加一個依賴於碼頭服務器罐子,否則我得到ClassNotFoundExceptions):

<webAppConfig implementation="org.mortbay.jetty.plugin.JettyWebAppContext"> 
    <defaultsDescriptor>${project.build.outputDirectory}/META-INF/webdefault.xml</defaultsDescriptor> 
    <contextPath>${jetty.contextRoot}</contextPath> 
    <sessionHandler implementation="org.eclipse.jetty.server.session.SessionHandler"> 
     <sessionManager implementation="org.eclipse.jetty.server.session.HashSessionManager"> 
      <storeDirectory>${basedir}/target/jetty-sessions</storeDirectory> 
     </sessionManager> 
    </sessionHandler> 
</webAppConfig> 

目錄目標/碼頭的會話被創建時,服務器運行,但沒有寫在那裏,會話不會持續,據我所知。

那麼,我錯過了什麼?

+0

我更新了eclipse.org wiki頁面以匹配新的插件類。 – jarnoan

回答

1

該文檔列出錯誤的類名稱。使用此片段:

<sessionHandler implementation="org.eclipse.jetty.server.session.SessionHandler"> 
    <sessionManager implementation="org.eclipse.jetty.server.session.HashSessionManager"> 
    <storeDirectory>${basedir}/target/sessions</storeDirectory> 
    <idleSavePeriod>1</idleSavePeriod> 
    </sessionManager> 
</sessionHandler> 

我沒有一個Eclipse登錄來解決它自己的維基。也許你可以抓住一個並修理它以幫助別人。

更新:我將idleSavePeriod添加到配置中。我第一次以爲你剛剛從Eclipse wiki複製錯字。

+0

嗯......這不正是我在問題中已經有的嗎? – jarnoan

+0

我在pom中做了一些看似不相關的更改,並突然注意到會話被持續了。這是在我添加idleSavePeriod設置之前,但這肯定會使storeDirectory顯示得更快。我仍然不知道爲什麼他們之前沒有堅持,爲什麼他們現在要做。可能與之前的會話中的所有內容不可序列化有關。 – jarnoan

+0

我也有一些問題。有時它存儲會話,有時不會。如果某些東西不是序列化的,我會得到錯誤。但如果所有內容都是可序列化的,我的會話存儲中就沒有任何內容顯示奇怪......也許它剛剛壞了 – Janning