我有一些调用外部Web服务的camel路由,我需要管理这个Web服务的会话池,保持一些会话打开,并在每次驼峰路由需要时重新使用空闲的会话。
哪个更“安全”: - 使用JDBC管理/持久化数据库中的会话数据,例如或 - 使用apache-commons池实现静态或单例池,例如
答案 0 :(得分:1)
您在WebService中的会话由一些SessionID表示,您需要保存/池。因此,您基本上需要汇集由登录操作返回的WebService响应(或部分)。此响应可能不再在Web服务器端的会话超时中停留在池中。
如果您的WebService会话在服务器端的数天有效,并且您希望在以下情况后恢复已打开的会话在客户端崩溃,或者你想通过DB在几个客户端之间共享打开的会话,然后我会使用DB。
否则,如果您只有一个客户端,或者每个客户端都有自己的小缓存,那么我会使用内存池。作为替代方案,您可以考虑通过Ehcache / Terracotta在客户/多个应用程序之间共享此池。顺便说一句,这些缓存允许您将池内容内容转储到磁盘,这可能是开箱即用的DB的一个很好的替代方案。
答案 1 :(得分:0)
如果您正在讨论JDBC连接池,那么我建议您使用DBCP或C3P0。如果您正在谈论POJO对象池,请查看Spring object pooling