在开始我的问题之前,我想澄清一下,我是java/j2ee开发人员,对甲骨文方面的事情了解有限。
我使用具有JDBC连接池的glassfish服务器,在后台使用oracle数据库。另外,我正在使用oracle的全局临时表来执行一些工作流程。
我将会话特定的数据存储在全局临时表中。
现在,我的问题是,在大多数情况下,我会为每个连接获得相同的sessionId。
这是否意味着我不能使用带有glassfish JDBC连接池的glboal临时表。
另一件有趣的事情是,如果我删除了连接池,那么我将为每个连接获得不同的sessionID。
请提供你的建议。
发布于 2016-10-02 13:27:17
在使用连接池时,当连接被释放到池中时,最好不要将状态留在数据库会话中。这是因为,不能保证下次需要连接时,您会恢复相同的连接。全局临时表(GTT)就是这种状态的一个例子,属于一个数据库会话,或者属于一个JDBC连接( DB会话和JDBC连接之间有一个1-1的映射)。如果使用另一个JDBC连接,它将不可见。因此,如果您的业务逻辑要求您使用GTT,那么在您使用此GTT之前,不应该将连接释放回池。请注意,这与建议尽快将连接释放回池的最佳实践背道而驰。作为另一种选择,您可以使用普通表并将临时结果提交到表中,以便可以通过任何其他连接访问它们。
https://stackoverflow.com/questions/39814981
复制相似问题