Jetty9.2.2集群Session共享

jopen 10年前

为了搭建Jetty9.2.2集群解决Session共享问题,参考官网给出来的文档。对Session保持到数据库(可以为关系型或非关系型)。我测试用的是MySQL,也可以说NoSQL数据库。

针对Jetty就不过多的介绍了,自行研究去吧!


1.准备环境

    MySQL数据库;下载地址:自行百度。

    jetty-distribution-9.2.2:下载地址:http://download.eclipse.org/jetty/


2.配置方式

    在JETTY_HOME/etc目录下找到jetty.xml文件。添加如下配置:

<!-- ========================== session mysql demo =================================== -->   <Set name="sessionIdManager">    <New id="jdbcidmgr" class="org.eclipse.jetty.server.session.JDBCSessionIdManager">     <Arg>      <Ref id="Server" />     </Arg>     <Set name="workerName">fred</Set>     <Call name="setDriverInfo">      <Arg>com.mysql.jdbc.Driver</Arg>      <Arg>jdbc:mysql://127.0.0.1:3306/mydb?user=root&amp;password=123123</Arg>     </Call>     <Set name="scavengeInterval">60</Set>    </New>    </Set>    <Call name="setAttribute">    <Arg>jdbcIdMgr</Arg>    <Arg>    <Ref id="jdbcidmgr" />    </Arg>   </Call>

    其中的数据库配置是我本地的配置,如果要上生产环境。请与系统数据库保持一致,确保系统正常使用。(也可以不一样,你自由选择)

    此处,配置的数据库为系统运行过程中Session保存为多个中间件服务器使用的数据库。稍后Jetty启动的时候,会自动去数据库中创建这两张表。

    Jetty9.2.2集群Session共享

    

    然后,在JETTY_HOME/webapps中创建一个文件夹,并命名为:ROOT。这个ROOT和tomcat中的ROOT是同一回事,将自己的项目复制到该目录下。并且在项目的 WEB-INF 中新建jetty-env.xml,

    jetty-env.xml中配置内容如下:

    

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">  <Configure id="webappContext" class="org.eclipse.jetty.webapp.WebAppContext">        <Set name="contextPath">/</Set>     <Get name="server">    <Get id="jdbcIdMgr" name="sessionIdManager"/>   </Get>     <Set name="sessionHandler">    <New class="org.eclipse.jetty.server.session.SessionHandler">     <Arg>      <New id="jdbcmgr" class="org.eclipse.jetty.server.session.JDBCSessionManager">       <Set name="sessionIdManager">        <Ref id="jdbcIdMgr"/>       </Set>      </New>     </Arg>    </New>   </Set>  </Configure>



 截至,Session的集群分布配置完成。


3.启动Jetty

    回到JETTY_HOME目录下。如果是Windows系统,打开cmd 将目录切换到JETTY_HOME/下。输入命令:java -jar start.jar (其他参数自行去查阅)来启动项目。

    如果是Linux系统下,bin/jetty.sh 进行启动。


    Jetty session的集群基本实现。然后再挂上Nginx进行均衡Jetty中间件服务器!OK

------------------------------------------------------------------------------------------------------------------------------

其他说明:

    1.官网说明文档地址:http://www.eclipse.org/jetty/documentation/

    2.也可以将Session保存到NoSQL数据库。参考文档:http://www.eclipse.org/jetty/documentation/current/session-clustering-mongodb.html

 来自:http://my.oschina.net/Rayn/blog/380231