oracle – 在JPA连接中设置上下文 – 这样安全吗?
我必要在每次数据库操纵之前配置一些上下文(我实行行使Oracle的包级变量,可是因为包从头编译的一些题目,我将实行行使 DBMS_SESSION和/或 DBMS_APPLICATION_INFO),以便我们可以在任那里所获取特定的用户信息我们必要它(措施,触发器等),而不是将数十个数据库毗连标识为“JBoss”. 我编写了一个Java EE拦截器来拦截对@Stateless bean的挪用.它挪用Oracle函数来配置一些会话上下文(对付一些示例代码How to tell if a transaction is active in a Java EE 6 interceptor,请查察此题目). 我的第一个担忧是毗连池.早先我以为Java EE提供的默认@PersistenceContext撒播足以担保统统都在统一个毗连/事宜/ EntityManager中运行,而我只必要在拦截器的末端打消配置全部内容(在finally块中)在毗连返回池之前.它好像有点懦弱,但我以为它可以事变. 然后我发明Hibernate有一个名为hibernate.connection.release_mode的属性 此刻我乃至不确定我是否可以在拦截器中靠得住地配置一些只对这个用户/操纵可见的对象,而没有其他人在我的营业要领中抓取沟通毗连并弄乱我的用户上下文的风险.据我相识,Oracle数据库会话变量是为毗连而不是为事宜或@PersistenceContext保存的(事实数据库对耐久化上下文一窍不通,而且毗连可以用于多个事宜). 我即将放弃,由于跟着我对所涉及的全部技能的实验细节的相识越来越多,这看起来越来越懦弱.这个用户上下文的设法是可以事变照旧我应该实行一种完全差异的要领?我怎么能测试/调试我的实现,以确保没有暗藏的并发题目?我没有找到任何有效的变乱监听器来监督框架举动,而且构建一个措施来对处事器举办压力测试是太多的事变来投资一些我不确定应该事变的对象. 我正在行使JBoss AS 7.1,EJB 3.1,Oracle 10g数据库和JPA 2.0(由Hibernate支持,尽量我们不行使任何特定于Hibernate的API). 办理要领我小我私人会停止实行在池中的JDBC毗连上配置单个参数.事实,池的设法是全部毗连都是沟通的.因此,固然你的拦截器设法会起浸染,但我也担忧它会有何等懦弱.该实验中的任何错误都将是最恶劣的竞争前提.另一方面,由于您正在行使Oracle,以是您也许但愿查察EclipseLink.它实现了JPA2而且获得了Oracle的大量扶助,因此它支持全部稀疏的成果.您也许但愿查察行使‘Isolated Client Sessions’.它看起来支持必要单独会话配置的假造专用数据库.假如您必要变动会话上下文,那么这将是一个办理方案. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |