Como alterar conexão em EclipseLink
-
10-07-2019 - |
Pergunta
Eu uso EclipseLink na minha candidatura. EclipseLink usa algum pool de conexão. Eu uso um interno EclipseLink. pool de conexão cria conexão quando ela é necessária e, em seguida, mantém-lo para uso futuro.
Eu preciso fazer a chamada SQL um específico em cada conexão quando ele é criado, mas apenas uma vez. O que eu preciso fazer é conceder papel específico do usuário no oráculo. Para segurança este usuário tem esse papel, mas com deficiência e necessidades para habilitá-lo.
Eu não quero fazer isso cada tempo de conexão é retirado da piscina, apenas quando ele é criado.
Como posso fazê-lo?
Solução 2
Eu achei melhor solução. Vou colocá-lo aqui no caso de alguém no futuro parece para isso.
Eu uso minha própria SessionCustomizer. Em que eu tenho:
public void customize(Session session) throws Exception {
DatabaseLogin login = session.getLogin();
Connector connector = login.getConnector();
login.setConnector(new ConnectorWrapper(connector, m_onCreationQuery));
}
Portanto, não é a minha própria ConnectorWrapper, que por sua vez envolve originais Connector e ao criar Conexão, usa um original para criá-lo, em seguida, chama consulta SQL sobre ele, em seguida, retorna-lo.
Outras dicas
EclipseLink não pode fazer isso fora da caixa. Você deve criar uma nova classe que estende org.eclipse.persistence.sessions.server.ConnectionPool
e substituir o buildConnection()
método. Este método será chamado quando uma nova conexão é criada.
Em primeiro lugar: o que você precisa fazer na criação de uma conexão? Eu pergunto porque pode haver uma solução específica para o seu problema.
Quanto à forma de fazer isso, isso depende inteiramente do que pool de conexão que você está usando e como você configurá-lo. Certas piscinas de conexão irá permitir que você fornecer ou definir uma fábrica de conexões para a criação de novas conexões. Nesse caso, você pode inicializar-los como quiser e essa é a abordagem que eu sugiro, se possível.
É difícil responder a mais sem mais detalhes acerca da sua configuração no entanto.