glassfish JDBC连接池和oracle全局临时表相同sessionId

问题描述:

在我开始处理我的问题之前,我想澄清一下,我是java/j2ee开发人员,并且对oracle方面的事物了解有限。glassfish JDBC连接池和oracle全局临时表相同sessionId

我正在使用Glassfish服务器与JDBC连接池和背面,oracle数据库。 另外我正在使用oracle的全局临时表来执行一些工作流程。

我将会话特定数据存储在全局临时表中。

现在我的问题是大部分时间我都会为每个连接获取相同的sessionId。

这是否意味着我不能使用glboal临时表与glassfish JDBC连接池。

另一个有趣的事情是,如果我删除了连接池,那么我会为每个连接获取不同的sessionID。

请提供您的建议。

使用连接池时,最好不要在连接释放到池时在数据库会话中保留状态。这是因为无法保证下次需要时可以恢复相同的连接。全局临时表(GTT)就是这种状态的一个例子,属于一个数据库会话或一个JDBC连接(DB会话和JDBC连接之间有一个1-1映射)。如果使用另一个JDBC连接,它将不可见。 因此,如果您的业务逻辑要求您使用GTT,那么您应该不会将连接释放回池中,直到您使用此GTT的东西。请注意,这违背了建议尽快将连接释放回池的最佳做法。作为替代,您可以使用普通表并将临时结果提交给它,以便可以通过任何其他连接访问它们。