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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top