Développement de code d'application client ActiveX

Développement d'un programme ActiveX Windows, de type Visual Basic, VBScript ou Active Server Pages, afin d'utiliser la passerelle ActiveX vers EJB de WebSphere pour accéder aux beans enterprise.

Avant de commencer

Important : Dans cette rubrique, il est supposé que vous êtes familiarisé avec la programmation ActiveX et le développement sous Windows. Pour plus d'informations sur les principes de la programmation des clients d'application ActiveX et sur la passerelle ActiveX vers EJB, reportez-vous à la rubrique Passerelle ActiveX vers Enterprise JavaBeans™ (EJB) et aux rubriques associées.

Vous devez également tenir compte des informations données dans les instructions de programmation relatives à la passerelle ActiveX vers EJB.

Pourquoi et quand exécuter cette tâche

Pour utiliser la passerelle ActiveX vers EJB afin d'accéder à une classe Java™, développez votre programme ActiveX en suivant les étapes ci-dessous :

Procédure

  1. Créez une instance de l'objet XJB.JClassFactory.
  2. Créez le code JVM (machine virtuelle Java) dans le processus du programme ActiveX en appelant la méthode XJBInit() de l'objet XJB.JClassFactory. Après que le programme ActiveX a créé un objet XJB.JClassFactory et appelé la méthode XJBInit(), le code JVM est initialisé et prêt à l'emploi.
  3. Créez un objet proxy pour la classe Java avec les méthodes XJB.JClassFactory FindClass() et NewInstance(). Le programme ActiveX peut utiliser l'objet proxy pour accéder à la classe Java, à des zones d'objet et à des méthodes.
  4. Appelez les méthodes de la classe Java, avec la syntaxe d'appel de méthode Java et accédez aux zones Java selon vos besoins.
  5. Lorsque la conversion automatique n'est pas possible, utilisez les fonctions auxiliaires pour procéder à la conversion. Vous pouvez opérer des conversions entre les types de données suivants :
    • Octets Java et Visual Basic
    • Types Visual Basic Currency et Java 64 bits
  6. Implémentez des méthodes pour traiter toutes les erreurs renvoyées par la classe Java. Avec Visual Basic ou VBScript, utilisez les zones Err.Number et Err.Description pour déterminer l'erreur Java qui s'est produite.

Exemple

Affichage d'un messageSystem.out : Le pont EJB (ActiveX to Enterprise JavaBeans) ne dispose pas d'une console pour afficher les messages Java System.out. Pour afficher ces messages pendant l'exécution d'un programme client autonome (par exemple, Visual Basic), vous devez rediriger la sortie vers un fichier.

L'exemple suivant explique comment rediriger la sortie vers un fichier :
launchClientXJB.bat MyProgram.exe > output.txt
  • Pour afficher les messages System.out lors de l'exécution d'un programme de service, tel que Active Server Pages, remplacez l'objet Java System.out OutputStream par FileOutputStream. Par exemple, dans VBScript:
    'Réacheminement de system.out vers un fichier
    ' Implique que oXJB est un objet XJB.JClassFactory initialisé
     Dim clsSystem
     Dim oOS
     Dim oPS
     Dim oArgs
    
    ' Obtention de la classe système
      Set clsSystem = oXJB.FindClass("java.lang.System")
    
    ' Création d'un objet FileOutputStream
    ' Création d'un objet PrintStream et affectation à FileOutputStream
      Set oArgs = oXJB.GetArgsContainer  oArgs.AddObject "java.io.OutputStream", oOS
      Set oPS = oXJB.NewInstance(oXJB.FindClass("java.io.PrintStream"), oArgs)
    
    ' Affectation du flot de sortie au fichier
      clsSystem.setOut oPS

Application client ActiveX utilisant des méthodes auxiliaires pour la conversion des types de données En général, les conversions de types de données entre ActiveX (Visual Basic et VBScript) et le code Java se font automatiquement, comme indiqué dans Passerelle ActiveX vers EJB, conversion des types de données. Toutefois, la fonction auxiliaire byte et la fonction auxiliaire currency sont fournies si la conversion automatique ne peut pas être exécutée.

  • Byte helper
    Dans la mesure où le type de données Octet Java est signé (-127 à 128) alors que son équivalent Visual Basic ne l'est pas (0 à 255), vous devez convertir les types Octet non signés en entiers Visual Basic, qui ressemblent à l'octet signé du code Java. Pour ce faire, utilisez la fonction auxiliaire suivante :
    Private Function GetIntFromJavaByte(Byte jByte) as Integer
    	     GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128
    End Function
  • Currency Helper
    Visual Basic 6.0 ne traite pas les entiers 64 bits aussi bien que les méthodes Java (tels que le type de données Long). Par conséquent, Visual Basic utilise le type Currency, qui est de façon intrinsèque un type de données à 64 bits. Le seul inconvénient du type Currency (le type Variant VT_CY) est qu'une virgule décimale est insérée dans le type. Pour extraire et manipuler la valeur Long de 64 bits sous Visual Basic, inspirez-vous de l'exemple de code suivant. Pour plus de détails sur cette technique de conversion des types de données Currency, reportez-vous à l'article Q189862, "HOWTO: Do 64-bit Arithmetic in VBA", de la base de connaissance Microsoft.
    ' Types auxiliaire Currency
    Private Type MungeCurr
        Value As Currency
    End Type
    Private Type Munge2Long
        LoValue As Long
        HiValue As Long
    End Type
    
    ' Fonctions auxiliaires 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
    
    ' Long Java comme exemple d'utilisation de Currency
    Dim LC As MungeCurr
    Dim L2 As Munge2Long
    
    ' Attribue une valeur Currency (en fait une valeur Java)
    ' à la variable de type MungeCurr
    LC.Value = cyTestIn
    
    ' Force la valeur de la variable de type Munge2Long
    LSet L2 = LC
    
    ' Effectue des opérations sur la valeur, maintenant qu'elle est
    ' disponible en deux morceaux de 32 bits
    L2.LoValue = L2.LoValue + 1
    
    ' Force le rétablissement de la valeur de Munge en valeur Currency
    LSet LC = L2
    cyTestIn = LC.Value

Que faire ensuite

Après avoir développé le code d'application client ActiveX, déployez et exécutez l'application ActiveX.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tcli_developactivex
Nom du fichier : tcli_developactivex.html