代码之家  ›  专栏  ›  技术社区  ›  amorfis

如何更改EclipseLink中的连接

  •  1
  • amorfis  · 技术社区  · 15 年前

    我在应用程序中使用eclipseLink。EclipseLink使用一些连接池。我使用EclipseLink内部链接。连接池在需要时创建连接,然后将其保留以供将来使用。

    创建每个连接时,我需要对其进行一次特定的SQL调用,但只能调用一次。我需要做的是在Oracle上授予用户特定的角色。为了安全起见,此用户具有此角色,但已禁用,需要启用它。

    我不想每次从池中获取连接时都这样做,只有在创建连接时才这样做。

    我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Aaron Digulla    15 年前

    EclipseLink不能开箱即用。必须创建一个扩展 org.eclipse.persistence.sessions.server.ConnectionPool 并重写该方法 buildConnection() . 创建新连接时将调用此方法。

        2
  •  1
  •   amorfis    15 年前

    我找到了更好的解决办法。我把它放在这儿,以防以后有人找这个。

    我使用自己的sessioncustomizer。其中我有:

    public void customize(Session session) throws Exception {
        DatabaseLogin login = session.getLogin();
        Connector connector = login.getConnector();
    
        login.setConnector(new ConnectorWrapper(connector, m_onCreationQuery));
    }
    

    所以有我自己的connectorwrapper,它依次包装原始连接器,在创建连接时,使用原始连接器来创建它,然后对其调用SQL查询,然后返回它。

        3
  •  0
  •   cletus    15 年前

    首先:在创建连接时需要做什么?我问是因为可能有一个具体的解决方案来解决你的问题。

    至于如何做到这一点,完全取决于您使用的连接池以及您如何设置它。某些连接池将允许您提供或定义用于创建新连接的连接工厂。在这种情况下,您可以根据需要初始化它们,如果可能的话,这就是我建议的方法。

    但是,如果没有关于设置的更多详细信息,很难进一步回答。