花了几天时间,试了下整合Ofbiz和memcached。还遗留一点问题。
测试环境:Ubuntu Server10 (64位),JDK1.6,OFbiz10.04
1.安装memcached
在Ubuntu下使用apt-get install memcached。
自动安装完成。
开启memcached
sudo /usr/bin/memcached -d -m 20 -u root -l 172.28.0.150 -p 12000 -c 256 -P /tmp/memcached.pid
2.下载memcached-session-manager
下载相关jar包:
spymemcached-2.7.jar memcached-session-manager-1.6.1.jar memcached-session-manager-tc6-1.6.1.jar
3.将下载的jar包放到tomcat的lib目录下。
在OFbiz中,将jar放置到 framework\catalina\lib 目录下
4.修改OFbiz整合的tomcat启动文件
在函数 createContext 中添加
..... boolean memcached = Boolean.valueOf(UtilProperties.getPropertyValue("memcached.properties", "ofbiz.session.memcached", "false")); if(memcached && appInfo.isSessionMemcached()){ MemcachedBackupSessionManager manager = new MemcachedBackupSessionManager(); manager.setMemcachedNodes(UtilProperties.getPropertyValue("memcached.properties", "msm.memcachedNodes")); manager.setSticky(Boolean.valueOf(UtilProperties.getPropertyValue("memcached.properties", "msm.sticky", "true"))); manager.setSessionBackupAsync(Boolean.valueOf(UtilProperties.getPropertyValue("memcached.properties", "msm.sessionBackupAsync", "true"))); manager.setLockingMode(UtilProperties.getPropertyValue("memcached.properties", "msm.lockingMode")); manager.setRequestUriIgnorePattern(UtilProperties.getPropertyValue("memcached.properties", "msm.requestUriIgnorePattern")); // manager.setTranscoderFactoryClass(UtilProperties.getPropertyValue("memcached.properties", "msm.transcoderFactoryClass")); context.setManager(manager); } .........................
appInfo.isSessionMemcached()
此函数是为了进一步配置OFbiz中的哪一个应用需要使用session同步,只将需要session同步的应用开启此应用
5.发布到2个实例上,测试session同步功能正常。
遇到问题:
manager.setTranscoderFactoryClass('de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory')
试图使用memcached-session-manager提供的序列化jar的时候,总是报错。
目前使用java默认的序列化功能