Ассоциация подключения к серверу приложений базы данных

У меня возникла следующая идея исследовать и выяснить, возможно ли это сработать. У меня есть сервер db2 на Linux-машине и два типа серверов приложений, geronimo и websphere. Я хотел бы знать, можно ли связать соединение geronimo или websphere с агентом db2. Другими словами, я хотел бы знать, какой пользователь веб-приложения выполняет какой запрос к базе данных в любой момент времени. Заранее спасибо,


person airmil    schedule 10.05.2013    source источник
comment
Возможно, можно будет использовать JDBC setClientInfo (). Я не знаю, что будет поддерживаться вашим сервером, но это может быть предметом исследования: pic.dhe.ibm.com/infocenter/db2luw/v9r7/   -  person Darius X.    schedule 10.05.2013
comment
Также в справочнике по SQL найдите ТЕКУЩИЙ КЛИЕНТ ...   -  person Darius X.    schedule 10.05.2013


Ответы (1)


Вы можете создать двух пользователей, одного для Geronimo и одного для Websphere, обоих пользователей в одной группе. Вы даете привилегии группе, и оба пользователя будут иметь одинаковые привилегии.

Затем, когда вы создаете «список приложений», вы можете различать подключения для Geronimo и для Websphere.

Если вы хотите изменить имя приложения, есть два подхода в зависимости от java-соединения.

Class.forName

Class.forName("com.ibm.db2.jcc.DB2Driver");
Properties props = new Properties();
props.put("user", "scott");
props.put("password", "tiger");
props.put("clientProgramName", "My Program 1");
Connection conn = DriverManager.getConnection(
"jdbc:db2://localhost:50000/sample", props);

Источник данных

Connection conn = null;
DB2SimpleDataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource();
ds.setDriverType(4);
ds.setServerName("localhost");
ds.setPortNumber(50000);
ds.setDatabaseName("sample");
ds.setUser("scott");
ds.setPassword("tiger");
ds.setClientProgramName("My Application 2");
conn = ds.getConnection();

Вы можете назначить имя соединения динамически, получив имя сервера приложений.

Я написал об этом в блоге: http://angocadb2.blogspot.fr/2012/12/nombre-de-la-conexion-java-en-db2-java.html

person AngocA    schedule 10.05.2013
comment
Моя проблема не в том, чтобы различать, какое соединение исходит с какого сервера. Я хочу выяснить, клиенты на том же сервере, который агент db2 использует для выполнения своих запросов. - person airmil; 13.05.2013
comment
Моя проблема не в том, чтобы различить, какое соединение исходит с какого сервера. Я хочу выяснить, клиенты на том же сервере, который агент db2 использует для выполнения своих запросов. В автономном режиме это легко, как вы упомянули. В среде сервера приложений все становится сложнее. - person airmil; 13.05.2013
comment
Как вы различаете каждого клиента на сервере? Если бы вы могли это сделать, вы измените имя подключения на это значение, а затем вы можете различать каждого клиента на сервере и в базе данных. - person AngocA; 13.05.2013
comment
Самый простой способ настройки - это IP-адрес, поскольку каждый сервер работает на разных машинах. Как правило, идея состоит не в том, чтобы иметь оба сервера, а в любом из них, и я хотел знать, легче ли в любом из этих двух найти то, что я ищу. - person airmil; 14.05.2013
comment
Вы можете узнать источник соединения через db2 list applications в столбце «Application Id», так что ассоциация уже выполнена, и вам не нужно ничего делать. Иногда IP-адрес имеет шестнадцатеричный формат. - person AngocA; 14.05.2013
comment
Кроме того, если DB2 использует концентратор соединений, один агент может обрабатывать запросы от разных клиентов приложений. Если вы используете * NIX, вы можете узнать, что в данный момент делает агент, с помощью опции a db2top. Недоступно в Windows. - person AngocA; 14.05.2013
comment
Меня не интересует различение пользователей на разных серверах приложений. Меня интересуют пользователи, которые подключены к одному и тому же серверу приложений, либо к веб-сфере geronimo, которую агент использует в любой момент. - person airmil; 14.05.2013
comment
Что для вас «пользователь»? Для меня пользователь - это тот, кто подключается к базе данных (приложение - с точки зрения администратора базы данных). Но, вероятно, вы хотите знать реальных пользователей (людей) (с точки зрения приложения). Вероятно, вам нужен надежный контекст: ibm.com/developerworks/ data / library / techarticle / dm-0609mohan - person AngocA; 14.05.2013
comment
Покопавшись, я обнаружил, что это более близкое решение к тому, что я ищу ibm.com/developerworks/data/library/techarticle/. Я посмотрю более внимательно и посмотрю, подходит ли он моим потребностям - person airmil; 15.05.2013