在Camel中实现对象池的好方法是什么

时间:2012-01-26 14:44:34

标签: cxf apache-camel pooling

我有一些调用外部Web服务的camel路由,我需要管理这个Web服务的会话池,保持一些会话打开,并在每次驼峰路由需要时重新使用空闲的会话。

哪个更“安全”: - 使用JDBC管理/持久化数据库中的会话数据,例如或 - 使用apache-commons池实现静态或单例池,例如

2 个答案:

答案 0 :(得分:1)

您在WebService中的会话由一些SessionID表示,您需要保存/池。因此,您基本上需要汇集由登录操作返回的WebService响应(或部分)。此响应可能不再在Web服务器端的会话超时中停留在池中。

如果您的WebService会话在服务器端的数天有效,并且您希望在以下情况后恢复已打开的会话在客户端崩溃,或者你想通过DB在几个客户端之间共享打开的会话,然后我会使用DB。

否则,如果您只有一个客户端,或者每个客户端都有自己的小缓存,那么我会使用内存池。作为替代方案,您可以考虑通过Ehcache / Terracotta在客户/多个应用程序之间共享此池。顺便说一句,这些缓存允许您将池内容内容转储到磁盘,这可能是开箱即用的DB的一个很好的替代方案。

答案 1 :(得分:0)

如果您正在讨论JDBC连接池,那么我建议您使用DBCPC3P0。如果您正在谈论POJO对象池,请查看Spring object pooling