Как изменить соединение в EclipseLink - PullRequest
1 голос
/ 17 сентября 2009

Я использую EclipseLink в своем приложении. EclipseLink использует некоторый пул соединений. Я использую EclipseLink внутреннюю. Пул соединений создает соединение, когда оно необходимо, а затем сохраняет его для будущего использования.

Мне нужно сделать один конкретный вызов SQL для каждого соединения при его создании, но только один раз. Что мне нужно сделать, так это предоставить пользователю определенную роль в Oracle. В целях безопасности этот пользователь имеет эту роль, но отключен и должен ее включить.

Я не хочу делать это каждый раз, когда соединение берется из пула, только при его создании.

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 17 сентября 2009

EclipseLink не может сделать это из коробки. Вы должны создать новый класс, который расширяет org.eclipse.persistence.sessions.server.ConnectionPool и переопределить метод buildConnection(). Этот метод будет вызываться при создании нового соединения.

1 голос
/ 17 сентября 2009

Я нашел лучшее решение. Я положу это здесь на случай, если кто-нибудь в будущем будет искать это.

Я использую свой собственный SessionCustomizer. В котором у меня есть:

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

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

Итак, есть мой собственный ConnectorWrapper, который, в свою очередь, оборачивает оригинальный Connector и при создании Connection использует оригинальный для его создания, затем вызывает SQL-запрос и возвращает его.

0 голосов
/ 17 сентября 2009

Во-первых: что нужно сделать при создании соединения? Я спрашиваю, потому что может быть конкретное решение вашей проблемы.

Что касается того, как это сделать, то это полностью зависит от того, какой пул соединений вы используете и как вы его настроили. Определенные пулы соединений позволят вам предоставить или определить фабрику соединений для создания новых соединений. В этом случае вы можете инициализировать их так, как хотите, и такой подход я бы порекомендовал, если это возможно.

Трудно ответить дальше без подробностей о вашей настройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...