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