前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bboss会话共享 原

bboss会话共享 原

作者头像
尚浩宇
发布2018-08-17 10:22:18
4420
发布2018-08-17 10:22:18
举报
文章被收录于专栏:杂烩杂烩

    区别于官方demo,这里介绍的是集群项目的session共享,以下是项目属性:

    项目名:testbboss1

    应用服务器:tomcat(两个7.0)

    说明:以下文章会提及依赖jar配置文件等,在这里不做详细描述,文章最后我会挂上gitbug地址,有需要的可以自行去看看。

    mongoDB安装启动这里不做细说了,以前说过或者百度下也行,mongoDB启动后放着不管,启动eclipse。

    新建web项目,加入相关依赖jar。

    在web.xml里加上一个fiflter    

代码语言:javascript
复制
<filter>
    <filter-name>sessionFilter</filter-name>
    <filter-class>org.frameworkset.security.session.impl.SessionFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>sessionFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>

    若需要监控继续添加一个servlet(以下完整)

代码语言:javascript
复制
<filter>
		<filter-name>sessionFilter</filter-name>
		<filter-class>org.frameworkset.security.session.impl.SessionFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>sessionFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>sessionFilter</filter-name>
		<url-pattern>*.page</url-pattern>
	</filter-mapping>
	<servlet>
		<servlet-name>mvcdispather</servlet-name>
		<servlet-class>org.frameworkset.web.servlet.DispatchServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!--如果有多个目录需要加载,请用,号分隔 -->
			<param-value>/WEB-INF/conf/bboss-*.xml</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>mvcdispather</servlet-name>
		<url-pattern>*.page</url-pattern>
	</servlet-mapping>

    在src下添加以下配置文件:

    log4j.properties(略)    

    mongodb.xml    

代码语言:javascript
复制
<properties>
	<!-- 增加mongodb数据源配置和client工厂类 -->
	<property name="default" factory-class="org.frameworkset.nosql.mongodb.MongoDB"
		init-method="init" destroy-method="close" factory-method="getMongoClient">
		<property name="serverAddresses">
			127.0.0.1:27017
		</property>
		<property name="option"></property>
		<property name="writeConcern" value="JOURNAL_SAFE" />
		<property name="readPreference" value="" />
		<!-- 如果需要用户认证则在下面配置mongodb的数据库验证用户和口令以及机制 -->
		<!-- mechanism 取值范围:PLAIN GSSAPI MONGODB-CR MONGODB-X509,默认为MONGODB-CR -->
		<!--<property name="credentials"> <list componentType="bean"> <property 
			class="org.frameworkset.nosql.mongodb.ClientMongoCredential" f:mechanism="MONGODB-CR" 
			f:database="sessiondb" f:userName="bboss" f:password="bboss"/> <property 
			class="org.frameworkset.nosql.mongodb.ClientMongoCredential" f:mechanism="MONGODB-CR" 
			f:database="tokendb" f:userName="bboss" f:password="bboss"/> </list> </property> -->
	</property>
</properties>

    sessionconf.xml    

代码语言:javascript
复制
<properties>
	<!-- 令牌服务配置
	(long sessionTimeout, Object sessionStore,
			String cookiename, boolean httponly,
			long cookieLiveTime,String[] listeners)
	-->
	<property name="sessionManager" class="org.frameworkset.security.session.impl.SessionManager"
		init-method="init" destroy-method="destroy">		
			<property name="sessionTimeout" value="3600000"/>
			<property name="sessionstore" refid="attr:sessionstore"/> 
			<!-- <property name="sessionstore" value="session"/>-->
			<property name="cookiename" value="b_sessionid"/>			
			<property name="httpOnly" value="true"/>
			<property name="secure" value="false"/>
	<!--
	  应用编码,如果没有指定appcode值默认为应用上下文
	  appcode的作用:当所有的应用上下文为“/”时,用来区分后台统计的会话信息
	  如果应用上下文为“/”时,appcode为ROOT
	 -->
			<!--<property name="appcode" value="10_25_192_142_pdp"/>-->
            <property name="sessionlisteners" value="org.frameworkset.security.session.impl.NullSessionListener"/>
	</property>
	
	<property name="sessionStaticManager" class="org.frameworkset.security.session.statics.MongoSessionStaticManagerImpl"/>	
	
	<property name="sessionstore" class="org.frameworkset.security.session.impl.MongDBSessionStore"/>
</properties>

    注意这里可配置需要共享属性,默认是共享全部属性。

    配置至此完毕,若需要监控,则在web路径下继续添加相关文件夹及jsp页面(详见代码)

    简单说下流程:

    在浏览器中访问第一个项目,bboss拦截到请求,获取session的id,将id作为cookie回传至客户端并且将session序列化保存到mongoDB中。访问第二个项目,请求带有session_id,bboss根据id从mongoDB中获取session,遍历session将属性复制保存到新seesion中(可配置只共享一部分属性),从而达到seesion共享的功能,本质上并不是公用一个session而是通过属性拷贝达到一种伪一致的session。

    这里是项目地址:https://github.com/shang7053/base/tree/master/testbboss1

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015/08/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档