ActiveX-Clientprogrammierung, Tipps zur Initalisierung der Java™ Virtual Machine
In diesem Abschnitt wird beschrieben, wie Sie den JVM-Code mit der ActiveX-EJB-Brücke initialisieren. Damit ein ActiveX-Clientprogramm (Visual Basic, VBScript oder ASP) auf Java-Klassen oder -Objekte zugreifen kann, muss es zunächst JVM-Code innerhalb seines Prozesses erstellen.
Zum Erstellen von JVM-Code ruft das ActiveX-Programm die Methode XJBInit() des XJB.JClassFactory-Objekts auf. Nachdem das XJB.JClassFactory-Objekt erstellt und die Methode XJBInit() aufgerufen wurden, wird die JVM initialisiert und kann verwendet werden.
Damit die XJB.JClassFactory die DDL (Description Definition Language) für die Java-Laufzeit bei der Initialisierung findet, müssen die JRE-Verzeichnisse (Java Runtime Environment) bin und bin\classic in der Umgebungsvariable für den Systempfad enthalten sein.
Die Methode XJBInit() akzeptiert nur einen Parameter, ein String-Array. Jeder String im Array stellt einen Befehlszeilenparameter dar, den Sie für ein Java-Programm normalerweise in der Befehlszeile von Java.exe angeben würden. Dieses String-Interface wird verwendet, um den Klassenpfad, die Stack-Größe, die Größe des Heapspeichers sowie Debug-Einstellungen zu definieren. Sie können eine Liste dieser Parameter abrufen, indem Sie java -? in der Befehlszeile angeben.
Wenn Sie einen Parameter falsch definieren, erhalten Sie die Fehlernachricht "0x6002 "VM konnte nicht initialisiert werden"".
Aufgrund der aktuellen Einschränkungen von JNI (Java Native Interface) können Sie JVM-Code nach dem Laden nicht entladen oder erneut initialisieren. Wenn die Methode XJBInit() bereits einmal aufgerufen wurde, haben nachfolgende Aufrufe daher nur den Effekt, dass sie ein doppeltes JClassFactory-Objekt erstellen, auf das Sie zugreifen können. Die beste Vorgehensweise ist, Ihr XJB.JClassFactory-Objekt global zu speichern und dieses Objekt weiterzuverwenden.
- Der folgende Auszug aus Visual Basic zeigt ein Beispiel für das Initialisieren von JVM-Code:
Dim oXJB as Object set oXJB = CreateObject("XJB.JClassFactory") Dim astrJavaInitProps(0) as String astrJavaInitProps(0) = _ "-Djava.class.path=.;c:\myjavaclasses;c:\myjars\myjar.jar" oXJB.XJBInit(astrJavaInitProps)