2016-11-01 3 views
0

J'ai implémenté la notification de modification Oracle pour écouter une base de données Oracle et envoyer des modifications à un programme d'écoute Java. Cela fonctionnait comme le charme. Cependant, pour une raison quelconque, je ne reçois plus aucune notification de modification de la base de données. Quels pourraient être les résultats possibles. Je ne vois pas assez d'informations à ce sujet dans les documents Oracle.Aucune notification de l'écouteur de notification de modification Oracle

Je vois la connexion enregistrée dans la table USER_CHANGE_NOTIFICATION_REGS. Mais je ne reçois aucune poussée.

void run() throws SQLException { 
    OracleConnection conn = connect(); 

    Properties prop = new Properties(); 
    prop.setProperty(OracleConnection.DCN_QUERY_CHANGE_NOTIFICATION, "true"); 
    DatabaseChangeRegistration dcr = conn.registerDatabaseChangeNotification(prop); 
    // add the listenerr: 
    dcr.addListener(new MyListener()); 

    // second step: add objects in the registration: 
    Statement stmt = conn.createStatement(); 
    // associate the statement with the registration: 
    ((OracleStatement) stmt).setDatabaseChangeRegistration(dcr); 
    ResultSet rs = stmt.executeQuery("SELECT * FROM MY_TABLE where MY_FLAG = '3'"); 
    while (rs.next()) { 
    } 
    String[] tableNames = dcr.getTables(); 
    for (int i = 0; i < tableNames.length; i++) { 
     System.out.println(tableNames[i] + " is part of the registration."); 
    } 
    rs.close(); 
    stmt.close(); 

} 


public class MyListener implements DatabaseChangeListener { 

    public void onDatabaseChangeNotification(DatabaseChangeEvent dce) { 
     System.out.println("Change is found"); 

    } 
} 

Répondre

0

Ok J'ai trouvé le problème. La version Oracle est 10g. et selon oracle ce n'est pas pris en charge dans les versions antérieures à 11g:

A partir de 11g Release 1 (11.1), les pilotes Oracle JDBC prennent en charge la base de données Modifier fonction de notification de la base de données Oracle