当前位置: 首页 > 面试题库 >

是否在EclipseLink中为每个连接设置数据库会话级别参数?

雍骏俊
2023-03-14
问题内容

我想为Eclipselink中的每个会话设置一个数据库会话变量。我要执行的SQL是这样的:

begin DBMS_SESSION.SET_IDENTIFIER('MyApplicationName'); end;

如果我尝试创建一个将执行命令的SessionEvent侦听器,我似乎会陷入无限递归中。

myServer.getEventManager().addListener(new SessionEventAdapter() {
    public void postConnect(SessionEvent evt) {
        evt.getSession().executeNonSelectingCall(new SQLCall("begin DBMS_SESSION.SET_IDENTIFIER('MyApplicationName'); end;"));
    }
});

我是用事件侦听器以错误的方式处理问题还是需要以特殊方式执行SQL命令?


问题答案:

您正在会话上执行查询,而会话仍在为其他进程获取连接。在事件结束之前,会话将无法使用触发postConnect事件的连接,这意味着该会话上的任何查询都将被迫获得其他连接。

您需要在SessionEvent中使用访问器来获取连接并使用它直接执行JDBC语句。就像是

  public void postConnect(SessionEvent evt) {
    Connection connection = ((Accessor)event.getResult()).getConnection()
    Statement statement = connection.createStatement();
    statement.execute("begin DBMS_SESSION.SET_IDENTIFIER('MyApplicationName'); end;");
  }


 类似资料:
  • 我想使用eclipse链接设置隔离级别,我尝试了以下两种方法: > java.sql.连接 Database aseLogin setTransationIsolation方法 如您所见,getTransactionSolation()方法的返回值之间存在一些不一致。我的问题是,在这两种情况下真正设置了哪种事务隔离?我知道eclipse链接在默认情况下使用不同的连接进行读写操作,即Database

  • 问题内容: 如何在php和mysql中使用数据库表中的会话? 问题答案: 您将需要创建一个像这样的对象: 然后,在session_start之前,初始化此类! http://php.net/manual/zh/function.session-set-save- handler.php http://php.net/manual/zh/function.serialize.php

  • 问题内容: 我正在使用新版本(3.0.0)。CodeIgniter的问题,我遇到了一个新问题,我的会话无法正常工作。我的意思是,控制器中的代码是正确的,因为没有错误,但是,当我尝试在视图中打印PHP变量时,什么也没有。 我在MySQL服务器中检查了我的表,什么也没有,我现在不出什么问题了。我把我的代码config.php。(我不太了解这个新版本中的很多内容) 我必须在“ make”会话中添加第一行

  • 问题内容: 我正在尝试使用JNDI为Spring Web应用程序设置数据库连接属性。 我正在考虑以下两种方法: 方法1: 在你的Spring配置中,你可能会有类似以下内容: 然后,在你的webapp /META-INF/context.xml文件中,你也应该具有类似的内容: 在你的web.xml中,你应该像这样: 方法二: 在Spring上下文中这样设置: 你可以使用类似下面的命令在Tomcat的

  • 问题内容: 无论我们是否检查会话变量,会话超时都会在每个请求上重置吗?还是我们应该使用至少一个会话变量? Ajax请求是否导致重置会话超时?像,… 谢谢 编辑1) 会导致重置会话超时吗? 问题答案: 是的,它确实。是否实际使用都没关系。 但是,如果 仅 使用ajax调用,则可能会遇到一些问题。 (虽然我还没有遇到过它自己,在这里的解释)

  • Since 8.1 setSessionData 会话数据写入 使用方法 AlipayJSBridge.call('setSessionData', { data: { name: 'Liu Hunan', age: '15' } }); 代码演示 session数据读写 <h2>点击下面按钮来查看效果</h2> <a href="javascript:void(0)"