Re: LISTEN/NOTIFY with JDBC

Поиск
Список
Период
Сортировка
Искать
От
Glenn Sullivan
Тема
Re: LISTEN/NOTIFY with JDBC
Дата
в 12:11:30
Msg-id
40A23E7C.2010206@varianinc.com
Список
Дерево обсуждения
Re: LISTEN/NOTIFY with JDBC Glenn Sullivan <glenn.sullivan@varianinc.com>
Re: LISTEN/NOTIFY with JDBC Doug McNaught <doug@mcnaught.org>
Re: LISTEN/NOTIFY with JDBC Kris Jurka <books@ejurka.com>
Kris,

Thanks for the response.  I have been using Sun's JDBC.
Do I take it that I need to create and use the Postgres
JDBC to get the ability to do NOTIFY/LISTEN?

Glenn


Kris Jurka wrote:
> 
> On Tue, 11 May 2004, Glenn Sullivan wrote:
> 
> 
>>Hi,
>>
>>I have been trying to get LISTEN/NOTIFY working in with JDBC.  I cannot seem
>>to get notified.  I looked in the e-mail archive and saw a lot of similiar
>>questions a couple of years ago.  I never could find any answers in the
>>e-mail nor in the documentation.  Perhaps I just missed it.
>>
>>I have tried the following code snipit:
>>
>>Connection db = DriverManager.getConnection(url, user, passwd);
>>Statement sql = db.createStatement();
>>
>>sql.execute("LISTEN mytest");
>>db.clearWarnings();
>>
>>for(int i=0; i < 10 ; i ++) {
>>     Thread.sleep(3000);
>>     SQLWarning warn = db.getWarnings();
>>     if(warn != null)
>>         System.out.println("warn: " + warn.getMessage());
>>     else
>>         System.out.println("warning null");
>>}
>>
>>
>>During the running of this loop, I run "psql" on the same database
>>and manually execute "NOTIFY mytest;".
>>
> 
> 
> Notifications don't come back as warning's, but are implemented using pg
> specific java code.  Further, there is no asynchronous notification
> support in the JDBC driver, so you can't just wait for them to show up.  
> Instead you must send a backend command every so often to see if a
> notification is ready.
> 
> Code more like the below should work:
> 
> import org.postgresql.PGConnection;
> import org.postgresql.PGNotification;
> 
> Connection conn = ... // get connection somehow
> Statement stmt = conn.createStatement();
> while (1) {
> 	ResultSet rs = stmt.executeQuery("SELECT 1");
> 	rs.close();
> 	PGConnection pgconn = (PGConnection)conn;
> 	PGNotification notif[] = conn.getNotifications();
> 	for (int i=0; i 		System.out.println(notif[i].getName());
> 	}
> 	Thread.sleep(3000);
> }
> 
> Kris Jurka	
> 


В списке pgsql-general по дате отправления
От: Andrew Kelly
Дата:
Сообщение: Re: OT: Dup mails
От: Fred Fung
Дата:
Сообщение: dbmirror
FAQ