Pregunta

Uso EclipseLink en mi aplicación. EclipseLink usa algún grupo de conexiones. Yo uso EclipseLink interno. El grupo de conexiones crea la conexión cuando se necesita y luego la mantiene para uso futuro.

Necesito hacer una llamada SQL específica en cada conexión cuando se crea, pero solo una vez. Lo que debo hacer es otorgar un rol específico al usuario en Oracle. Por seguridad, este usuario tiene este rol, pero está deshabilitado, y necesita habilitarlo.

No quiero hacerlo cada vez que se toma la conexión del grupo, solo cuando se crea.

¿Cómo puedo hacerlo?

¿Fue útil?

Solución 2

Encontré una mejor solución. Lo pondré aquí en caso de que alguien en el futuro busque esto.

Yo uso mi propio SessionCustomizer. En el que tengo:

public void customize(Session session) throws Exception {
    DatabaseLogin login = session.getLogin();
    Connector connector = login.getConnector();

    login.setConnector(new ConnectorWrapper(connector, m_onCreationQuery));
}

Entonces, existe mi propio ConnectorWrapper, que a su vez envuelve el Connector original y cuando crea Connection, usa uno original para crearlo, luego llama a la consulta SQL y luego lo devuelve.

Otros consejos

EclipseLink no puede hacer esto fuera de la caja. Debe crear una nueva clase que extienda org.eclipse.persistence.sessions.server.ConnectionPool y anular el método buildConnection () . Se llamará a este método cuando se cree una nueva conexión.

Primero: ¿qué necesitas hacer para crear una conexión? Pregunto porque puede haber una solución específica a su problema.

En cuanto a cómo hacer esto, depende completamente de qué grupo de conexiones esté usando y cómo lo haya configurado. Ciertos grupos de conexiones le permitirán proporcionar o definir una fábrica de conexiones para crear nuevas conexiones. En ese caso, puede inicializarlos como quiera y ese es el enfoque que sugeriría si es posible.

Sin embargo, es difícil responder más sin más detalles sobre su configuración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top