Desarrollo del código de aplicaciones cliente de ActiveX

Desarrolle un programa ActiveX Windows como, por ejemplo, Visual Basic, VBScript y Active Server Pages, para utilizar el puente WebSphere ActiveX a EJB para acceder a enterprise beans.

Antes de empezar

Importante: En este tema se presupone que está familiarizado con la programación y el desarrollo de ActiveX en la plataforma Windows. Para obtener información sobre los conceptos de programación de clientes de aplicaciones ActiveX y el puente de ActiveX a EJB, consulte el tema Puente de ActiveX a Enterprise JavaBeans™ (EJB) y los temas relacionados.

Considere la información proporcionada en el puente ActiveX a EJB como unas instrucciones de programación detalladas.

Acerca de esta tarea

Para utilizar el puente ActiveX a EJB para acceder a una clase Java™, desarrolle el programa ActiveX para completar los pasos siguientes:

Procedimiento

  1. Cree una instancia del objeto XJB.JClassFactory.
  2. Cree el código JVM (Java Virtual Machine) dentro del proceso del programa ActiveX, llamando al método XJBInit() del objeto XJB.JClassFactory. Después de que el programa ActiveX crea un objeto XJB.JClassFactory y llama al método XJBInit(), se inicializa el código de JVM y está preparado para su uso.
  3. Cree un objeto proxy para la clase Java, utilizando los métodos XJB.JClassFactory FindClass() y NewInstance(). El programa ActiveX puede utilizar el objeto proxy para acceder a la clase Java, los campos de objetos y los métodos.
  4. Llame a métodos en la clase Java, con la sintaxis de invocación a método Java y acceda a los campos Java según precise.
  5. En los casos donde no es posible la conversión automática, utilice las funciones de ayudante para realizar la conversión. Puede realizar conversiones entre los tipos de datos siguientes:
    • Byte Java y Byte Visual Basic
    • Tipos monetarios de Visual Basic y Java de 64 bits.
  6. Implemente métodos para gestionar los errores devueltos de la clase Java. En Visual Basic o VBScript, utilice los campos Err.Number y Err.Description para determinar el error Java real.

Ejemplo

Visualización de un mensaje System.out: El puente de ActiveX a EJB (Enterprise JavaBeans) no dispone de una consola para ver mensajes de System.out de Java. Para visualizar estos mensajes cuando se ejecuta un programa cliente autónomo (como Visual Basic), redirija la salida a un archivo.

En el ejemplo siguiente se muestra cómo redirigir la salida a un archivo:
launchClientXJB.bat MyProgram.exe > output.txt
  • Para ver los mensajes de System.out cuando se ejecuta un programa de Servicio como Active Server Pages, altere temporalmente el objeto System.out OutputStream de Java con FileOutputStream. Por ejemplo, en VBScript:
    'Redirija system.out a archivo
    ' Se supone que oXJB es un objeto XJB.JClassFactory inicializado
     Dim clsSystem
     Dim oOS
     Dim oPS
     Dim oArgs
    
    ' Obtenga la clase System
      Set clsSystem = oXJB.FindClass("java.lang.System")
    
    ' Cree un objeto FileOutputStream
    ' Cree un objeto PrintStream y asígnelo a nuestro FileOutputStream
      Set oArgs = oXJB.GetArgsContainer  oArgs.AddObject "java.io.OutputStream", oOS
      Set oPS = oXJB.NewInstance(oXJB.FindClass("java.io.PrintStream"), oArgs)
    
    ' Establezca nuestro System OutputStream a nuestro archivo
      clsSystem.setOut oPS

Aplicación de cliente ActiveX que utiliza métodos de ayudante para la conversión de tipos de datos. Normalmente, la conversión de tipos de datos entre ActiveX (Visual Basic y VBScript) y Java se produce automáticamente, como se ha descrito en el tema Puente de ActiveX a EJB, conversión de tipos de datos. Sin embargo, se proporcionan las funciones de ayudante de bytes y de moneda cuando no es posible la conversión automática.

  • Función de ayudante de bytes
    Dado que el tipo de datos de byte de Java son bytes con signo (-127 a 128) y el tipo de datos de byte de Visual Basic son bytes sin signo (0 a 255), debe convertir los bytes sin signo a enteros de Visual Basic, que son similares a los bytes con signo de Java. Para hacer esta conversión, puede utilizar las siguientes funciones de ayudante:
    Private Function GetIntFromJavaByte(Byte jByte) as Integer
    	     	     GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128
    End Function
  • Función de ayudante de moneda
    Visual Basic 6.0 no puede manejar correctamente los enteros de 64 bits como pueden hacerlo los métodos Java (como el tipo de datos Long). Por lo tanto, Visual Basic utiliza el tipo de moneda que es intrínsecamente un tipo de datos de 64 bits. El único efecto colateral de utilizar el tipo de moneda (el tipo de variante VT_CY) es que se inserta un punto decimal en el tipo. Para extraer y manipular el valor Long de 64 bits en Visual Basic, utilice el código como se muestra en el ejemplo siguiente: Para obtener más detalles acerca de esta técnica para convertir los tipos de datos de moneda, consulte Q189862, "HOWTO: Do 64-bit Arithmetic in VBA", en la base de información de Microsoft.
    ' Currency Helper Types
    Private Type MungeCurr
        Value As Currency
    End Type
    Private Type Munge2Long
        LoValue As Long
        HiValue As Long
    End Type
    
    ' Currency Helper Functions
    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
    
    ' Java Long as Currency Usage Example
    Dim LC As MungeCurr
    Dim L2 As Munge2Long
    
    ' Assign a Currency Value (really a Java Long)
    ' to the MungeCurr type variable
    LC.Value = cyTestIn
    
    ' Coerce the value to the Munge2Long type variable
    LSet L2 = LC
    
    ' Perform some operation on the value, now that we
    ' have it available in two 32-bit chunks
    L2.LoValue = L2.LoValue + 1
    
    ' Coerce the Munge value back into a currency value
    LSet LC = L2
    cyTestIn = LC.Value

Qué hacer a continuación

Tras desplegar el código de aplicación cliente de ActiveX, despliegue y ejecute la aplicación ActiveX.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tcli_developactivex
File name: tcli_developactivex.html