Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » Java in der Datenbank

 

Shutdown-Hooks in der Java VM

Der Java VM ClassLoader von SQL Anywhere, der zur Bereitstellung von Unterstützung für JAVA in der Datenbank dient, ermöglicht es Anwendungen, Shutdown-Hooks zu installieren. Diese Shutdown-Hooks sind denjenigen sehr ähnlich, die Anwendungen zusammen mit der JVM Runtime installieren. Wenn eine Verbindung, welche die Unterstützung für Java in der Datenbank nutzt, eine STOP JAVA-Anweisung ausführt oder getrennt wird, führt ClassLoader für die Verbindung anschließend alle Shutdown-Hooks aus, die vor dem Entladen für die betreffende Verbindung installiert wurden. Beachten Sie, dass bei regulären Anwendungen für Java in der Datenbank, die alle Java-Klassen in der Datenbank installieren, die Installation der Shutdown-Hooks nicht erforderlich sein sollte. Die ClassLoader-Shutdown-Hooks sollten nur mit großer Vorsicht verwendet werden und dürfen nur dazu benutzt werden, systemweite Ressourcen zu bereinigen, welche für die jeweilige Verbindung zugewiesen wurden, die Java anhält. Beachten Sie auch, dass die jdbc:default-JDBC-Anforderungen in Shutdown-Hooks nicht zulässig sind, da die jdbc:default-Verbindung bereits geschlossen ist, bevor der ClassLoader-shutdown-Hook aufgerufen wird.

Damit Sie einen shutdown-Hook mit Java VM ClassLoader von SQL Anywhere installieren können, muss sich die Datei sajvm.jar im Classpath des Java-Compilers befinden und sie muss Code ausführen, der folgendem Beispiel ähnelt:

SDHookThread hook = new SDHookThread( ... );
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
((ianywhere.sa.jvm.SAClassLoader)classLoader).addShutdownHook( hook );

Beachten Sie, dass die SDHookThread-Klasse die Standard-Thread-Klasse erweitert und dass der obige Code von einer Klasse ausgeführt werden muss, die von ClassLoader für die aktuelle Verbindung geladen wurde. Jede Klasse, die innerhalb der Datenbank installiert und wird anschließend über einen externen Umgebungsaufruf aufgerufen wurde, wird automatisch von der richtigen Java VM ClassLoader-Instanz für SQL Anywhere ausgeführt.

Um einen shutdown-Hook aus der Liste von Java VM ClassLoader für SQL Anywhere zu entfernen, muss eine Anwendung Code ausführen, der folgendem Beispiel ähnelt:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
((ianywhere.sa.jvm.SAClassLoader)classLoader).removeShutdownHook( hook );

Der obige Code muss von einer Klasse ausgeführt werden, die von ClassLoader für die aktuelle Verbindung geladen wurde.