ActiveX-Clientanwendungscode entwickeln

Dieser Abschnitt beschreibt die wesentlichen Schritte für das Entwickeln eines ActiveX-Windows-Programms wie Visual Basic, VBScript und Active Server Pages, das den Zugriff auf Enterprise-Beans über die WebSphere-ActiveX-EJB-Brücke ermöglicht.

Vorbereitende Schritte

Wichtig: Dieser Artikel setzt voraus, dass Sie mit der ActiveX-Programmierung und -Entwicklung auf der Windows-Plattform vertraut sind. Informationen zu den Programmierkonzepten von ActiveX-Anwendungsclients und zur ActiveX-EJB-Brücke finden Sie im Artikel zur ActiveX-EJB-Brücke und in den zugehörigen Artikeln.

Lesen Sie die Programmierungsrichtlinien zur ActiveX-EJB-Brücke.

Informationen zu diesem Vorgang

Wenn Sie die ActiveX-EJB-Brücke für den Zugriff auf eine Java-Klasse verwenden möchten, müssen Sie Ihr ActiveX-Programm so entwickeln, dass es die folgenden Schritte ausführt:

Vorgehensweise

  1. Erstellen einer Instanz des Objekts XJB.JClassFactory.
  2. Erstellen von JVM-Code innerhalb des ActiveX-Programmprozesses durch Aufrufen der Methode XJBInit() des Objekts XJB.JClassFactory. Nachdem das ActiveX-Programm ein XJB.JClassFactory-Objekt erstellt und die Methode XJBInit() aufgerufen hat, wird der JVM-Code initialisiert und kann verwendet werden.
  3. Erstellen eines Proxy-Objekts für die Java-Klasse mit den XJB.JClassFactory-Methoden FindClass() und NewInstance(). Das ActiveX-Programm kann mit dem Proxy-Objekt auf die Java-Klasse, Objektfelder und Methoden zugreifen.
  4. Aufrufen der Methoden für die Java-Klasse mit der Syntax für Methodenaufrufe und Zugriff auf Java-Felder.
  5. Falls eine automatische Konvertierung nicht möglich ist, verwenden Sie die Helper-Funktionen. Eine Konvertierung ist zwischen den folgenden Datentypen möglich:
    • Java-Byte und Visual-Basic-Byte
    • Visual-Basic-Währungstypen und Java 64-bit
  6. Implementieren von Methoden zur Bearbeitung der von der Java-Klasse zurückgegebenen Fehler. In Visual Basic und VBScript verwenden Sie die Felder "Err.Number" und "Err.Description", um den tatsächlichen Java-Fehler zu bestimmen.

Beispiel

Anzeige einer System.out-Nacchricht: The ActiveX to Enterprise JavaBeans (EJB) bridge does not have a console available to view Java™ System.out messages. Wenn Sie diese Nachrichten beim Ausführen eines eigenständigen Clientprogramms (wie z. B. Visual Basic) anzeigen möchten, müssen Sie die Ausgabe in eine Datei umleiten.

Das folgende Beispiel veranschaulicht, wie Ausgabe in eine bestimmte Datei umgeleitet wird:
launchClientXJB.bat MeinProgramm.exe > output.txt
  • Wenn Sie die Nachrichten für System.out beim Ausführen eines Serviceprogramms, wie z. B. Active Server Pages, anzeigen möchten, müssen Sie das Java-System.out-Objekt "OutputStream" in "FileOutputStream" ändern. Beispielsweise in VBScript:
    'system.out in eine Datei umleiten
    ' Dabei wird angenommen, dass oXJB ein initialisiertes XJB.JClassFactory-Objekt ist
     Dim clsSystem
     Dim oOS
     Dim oPS
     Dim oArgs
    
    ' System-Klasse abrufen
      Set clsSystem = oXJB.FindClass("java.lang.System")
    
    ' Ein FileOutputStream-Objekt erstellen
    ' PrintStream-Objekt erstellen und dem Objekt den FileOutputStream zuordnen
      Set oArgs = oXJB.GetArgsContainer  oArgs.AddObject "java.io.OutputStream", oOS
      Set oPS = oXJB.NewInstance(oXJB.FindClass("java.io.PrintStream"), oArgs)
    
    ' Datei für OutputStream des Systems angeben
      clsSystem.setOut oPS

ActiveX-Clientanwendung mit Helper-Methoden für die Konvertierung von Datentypen. Im Allgemeinen erfolgt die Datentypkonvertierung zwischen ActiveX (Visual Basic und VBScript) und Java-Methoden automatisch, wie im Abschnitt "ActiveX-EJB-Brücke, Datentypen konvertieren" beschrieben. Die Helper-Funktionen "Byte" und "Currency" sind für Fälle vorgesehen, in denen eine automatische Konvertierung nicht möglich ist.

  • Helper-Funktion "Byte"
    Da der Java-Datentyp "Byte" signiert (-127 bis 128) und der Visual-Basic-Datentyp "Byte" nicht signiert (0 bis 255) ist, müssen Sie den nicht signierten Datentyp "Byte" in Visual-Basic-Integer konvertieren, die wie der signierte Java-Datentyp "Byte" erscheinen. Sie können diese Konvertierung mit der folgenden Helper-Funktion durchführen:
    Private Function GetIntFromJavaByte(Byte jByte) as Integer
    	     	     GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128
    End Function
  • Helper-Funktion für "Currency"
    Visual Basic 6.0 kann im Gegensatz zu Java-Methoden (Datentyp "Long") 64-Bit-Integer nicht richtig verarbeiten. Daher verwendet Visual Basic den Typ "Currency", der im Wesentlichen ein 64-Bit-Datentyp ist. Der einzige Nebeneffekt bei Verwendung des Typs "Currency" (Variant-Typ VT_CY) besteht darin, dass ein Dezimalpunkt in den Typ eingefügt wird. Wenn Sie den 64-Bit-Wert von "Long" extrahieren und in Visual Basic bearbeiten möchten, verwenden Sie Code wie im folgenden Beispiel. Weitere Information zu diesem Verfahren der Konvertierung der Currency-Datentypen finden Sie in der Microsoft Knowledge Base unter Q189862, "HOWTO: Do 64-bit Arithmetic in VBA".
    ' Helper-Typen für "Currency"
    Private Type MungeCurr
        Value As Currency
    End Type
    Private Type Munge2Long
        LoValue As Long
        HiValue As Long
    End Type
    
    ' Helper-Funktionen für "Currency"
    Private Function CurrToText(ByVal Value As Currency) As String
        Dim Temp As String, L As Long
        Temp = Format$(Value, "#.0000")
        L = Len(Temp)
        Temp = Left$(Temp, L - 5) & Right$(Temp, 4)
        Do While Len(Temp) > 1 And Left$(Temp, 1) = "0"
            Temp = Mid$(Temp, 2)
        Loop
        Do While Len(Temp) > 2 And Left$(Temp, 2) = "-0"
            Temp = "-" & Mid$(Temp, 3)
        Loop
        CurrToText = Temp
    End Function
    
    Private Function TextToCurr(ByVal Value As String) As Currency
        Dim L As Long, Negative As Boolean
        Value = Trim$(Value)
        If Left$(Value, 1) = "-" Then
            Negative = True
            Value = Mid$(Value, 2)
        End If
        L = Len(Value)
        If L < 4 Then
            TextToCurr = CCur(IIf(Negative, "-0.", "0.") & _
                              Right$("0000" & Value, 4))
        Else
            TextToCurr = CCur(IIf(Negative, "-", "") & _
                              Left$(Value, L - 4) & "." & Right$(Value, 4))
        End If
    End Function
    
    ' Beispiel für Verwendung von Java-Typ "Long" als "Currency"
    Dim LC As MungeCurr
    Dim L2 As Munge2Long
    
    ' Wert von "Currency" (Java-Typ "Long")
    ' der Variable des Typs "MungeCurr" zuordnen
    LC.Value = cyTestIn
    
    ' Konvertierung des Werts in Variable des Typs "Munge2Long" erzwingen
    LSet L2 = LC
    
    ' Operation für den Wert ausführen, da der Wert
    ' jetzt in 32-Bit-Segmenten verfügbar ist
    L2.LoValue = L2.LoValue + 1
    
    ' Rückkonvertierung des munge-Werts in einen currency-Wert erzwingen
    LSet LC = L2
    cyTestIn = LC.Value

Nächste Schritte

Nachdem Sie den ActiveX-Clientanwendungscode entwickelt haben, implementieren Sie die ActiveX-Anwendung und führen sie aus.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tcli_developactivex
Dateiname:tcli_developactivex.html