jetty 配置集群

本文是把session 存在数据库当中, 为测试方便采用hsql数据库,hsql数据库比较小, 使用起来很方便, 在产品环境还是换会mysql 数据库好一些。

 

配置参考下面页面

http://www.eclipse.org/jetty/documentation/current/session-clustering-jdbc.html

 

主要有2个部分要配置, session ID manager和session manager。

 

 

session ID manager是确保session IDs是唯一的,并把session 信息保持在数据库当中。所有web application可以用同一个session ID manager。

session manager是管理session 的生命周期,比如 (create/update/invalidate/expire),session mangager在每一个web application 都应该创建一个实例, 所以应该配置在jetty当中的
context xml或者WEB-INF/jetty-web.xml当中。

 

配置 JDBCSessionIdManager

在全局的jetty.xml中配置, 配置了数据库连接池c3p0, 需要把c3p0-0.9.5, mchange-commons-java-0.2.9,

hsqldb 放在etc/lib下面

 

<!-- data source jndi-->
<Set name="sessionIdManager">
        <New id="jdbcidmgr" class="org.eclipse.jetty.server.session.JDBCSessionIdManager">
          <Arg>
            <Ref id="Server"/>
          </Arg>
          <Set name="workerName">fred</Set>
          <Set name="DatasourceName">jdbc/DSTest</Set>
          <Set name="scavengeInterval">60</Set>
        </New>
      </Set>
      <Call name="setAttribute">
        <Arg>jdbcIdMgr</Arg>
        <Arg>
          <Ref id="jdbcidmgr"/>
        </Arg>
      </Call>
<!-- jdbc config 
 <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>org.hsqldb.jdbc.JDBCDriver</Arg>
           <Arg>jdbc:hsqldb:hsql://localhost/session?user=SA</Arg>
         </Call>
         <Set name="scavengeInterval">60</Set>
       </New>
 </Set>
	<Call name="setAttribute">
       <Arg>jdbcIdMgr</Arg>
       <Arg><Ref id="jdbcidmgr"/></Arg>
	</Call>
 -->
 

<New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
   <Arg></Arg>
   <Arg>jdbc/DSTest</Arg>
   <Arg>
    <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
       <Set name="driverClass">org.hsqldb.jdbc.JDBCDriver</Set>
       <Set name="jdbcUrl">jdbc:hsqldb:hsql://localhost/session?user=SA</Set>
       <Set name="user">SA</Set>
    </New>
   </Arg>
  </New>

 

配置JDBCSessionManager

 

这里是采用context xml file配置方式

 

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Ref name="Server" id="Server">
    <Call id="jdbcIdMgr" name="getAttribute">
      <Arg>jdbcIdMgr</Arg>
    </Call>
  </Ref>
 
  <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>

 

使jetty 添加jnidi module

cd /opt/jetty
cd my-base
java -jar ../start.jar --add-to-startd=jndi

 http://www.eclipse.org/jetty/documentation/current/jndi.html

 

启动jetty

demo-base>java -jar ../start.jar

 

配置成功, jdbc保存session适合小型的集群, 大型集群可以考虑mongodb, redis, memcache.

 

http://laravel.iteye.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值