我已经设置了一个简单的Tomcat集群,使用粘性会话(mod_jk作为负载均衡器)可以正常工作。 2个节点在同一个盒子上运行但在不同的端口上运行(这是我的测试环境)
不幸的是,如果我关闭L2缓存,应用程序的性能会急剧下降。
为了启用它,我一直在尝试使用描述here的rmi方法。
我在persistence.xml中添加了必要的eclipselink属性:
< property name =" eclipselink.cache.coordination.protocol"值=" RMI" />
< property name =" eclipselink.cache.coordination.rmi.url"值=" T3://127.0.0.1:1099 /" />
运行此配置时,我会看到以下内容:
如果我删除了node1上的实体,我可以在其catalina.out中看到一条错误消息,其中包含:
ERROR org.apache.catalina.session.StandardManager-异常加载会话来自持久存储
java.io.WriteAbortedException:写入已中止; java.io.NotSerializableException:org.apache.catalina.connector.RequestFacade
node2上的实体不会从共享缓存中删除。
答案 0 :(得分:0)
我实际上没有解决我的问题,但是我找到了解决方法。 过时缓存可能导致问题的地方,我调用EntityManagerFactory类的方法getCache()。evict(< Class name>)。 我意识到这不是一个合适的解决方案,但我没有时间进行进一步的研究,这个适合我的需要。