Package org.pjdbc.sql

Class PjdbcListeners

java.lang.Object
org.pjdbc.sql.PjdbcListeners

public final class PjdbcListeners extends Object
Central registry for PJDBC event listeners.

Listeners can be registered programmatically or via ServiceLoader. All registered listeners will receive callbacks from PJDBC drivers.

Example usage:


 // Programmatic registration
 PjdbcListeners.register(new MyEventListener());

 // ServiceLoader (create META-INF/services/org.pjdbc.sql.PjdbcEventListener)
 // containing fully qualified class names, one per line
 

Thread Safety: This class is thread-safe. Listeners are stored in a CopyOnWriteArrayList to allow safe iteration during notification while still permitting registration/unregistration.

Since:
2.2.0
  • Method Details

    • register

      public static void register(PjdbcEventListener listener)
      Register a listener to receive PJDBC events.
      Parameters:
      listener - the listener to register
    • unregister

      public static boolean unregister(PjdbcEventListener listener)
      Unregister a previously registered listener.
      Parameters:
      listener - the listener to unregister
      Returns:
      true if the listener was found and removed
    • clear

      public static void clear()
      Clear all registered listeners. Useful for testing.
    • loadFromServiceLoader

      public static void loadFromServiceLoader()
      Load listeners from ServiceLoader. Called automatically on first notification, but can be called explicitly.
    • listenerCount

      public static int listenerCount()
      Get the number of registered listeners.
      Returns:
      the listener count
    • fireRetry

      public static void fireRetry(String sql, SQLException cause, int attempt, long delayMs)
      Notify listeners of a retry event.
    • fireCircuitBreakerStateChange

      public static void fireCircuitBreakerStateChange(String name, String oldState, String newState)
      Notify listeners of a circuit breaker state change.
    • fireSqlTransformed

      public static void fireSqlTransformed(String original, String transformed)
      Notify listeners of SQL transformation.
    • fireFederatedQuery

      public static void fireFederatedQuery(String sql, List<String> targetUrls)
      Notify listeners of a federated query.
    • fireCircuitBreakerRejection

      public static void fireCircuitBreakerRejection(String name, String state)
      Notify listeners of a circuit breaker rejection.
    • fireChaosInjected

      public static void fireChaosInjected(String type, String sql, String details)
      Notify listeners of chaos injection.