CAS服务端在集群环境下,需要将票据保存到一个地方,这个时候就需要分布式缓存了,在tomcat下使用jpa2.0将数据保存到
数据库。当将应用发布到WAS7.0的时候,发现居然不支持JPA2.0,要装一个功能包,到ibm去看了一下,居然不提供传统的升级包,下载的是一个zip,需要IBM installmanager.再去下载,唉,不给国内下。得~,,换个方式吧,后来看到WAS里面有一个叫做高速缓存的东西,,看了一下API,比较好用,通过jndi取得实例然后就可以当MAP使用了。马上动手修改票据保存实现。搞定之后发现复制域并没有实现分布缓存,,折腾。。。。折腾不出来,我在其他项目中使用了mamcached作为缓存服务器的,又在linux下搭建memcached服务器。增加缓存实现、测试。比较顺利。后来客户不给用memcached,只要自己研究JDBC方式将票据保存到数据库了。
在CAS-clinet中有两个map保存session和票据的关系数据。当客户端在集群环境下的时候,这个也是一个问题。使用memcached,发现Tomcat不支持session序列化,另外Tomcat可以在管理中序列化,然后得到session。
后来我又换成ehcache+tc。tc需要配置ods才能支持pojo非序列化东西。was的session是可以序列化的,但是居然没有默认构造函数。
继续折腾中。。
后来想到通过修改CAS-client客户端,支持在CAS-client集群环境下,当一个节点收到消息后,广播到其他节点。通过这种方式来将集群中的所有节点都登出。