Desenvolvendo o Código do Aplicativo Cliente ActiveX

Desenvolva um programa Windows ActiveX, como Visual Basic, VBScript e Active Server Pages, para usar o WebSphere ActiveX para ponte EJB para acessar enterprise beans.

Antes de Iniciar

Importante: Este tópico assume que você esteja familiarizado com a programação e o desenvolvimento do ActiveX na plataformaWindows. Para obter informações sobre os conceitos de programação dos aplicativos clientes ActiveX e da ponte ActiveX para EJB, consulte o tópico da Ponte ActiveX para Enterprise JavaBeans™ (EJB) e os tópicos relacionados.

Considere as informações fornecidas em Ponte ActiveX para EJB como boas diretrizes de programação.

Sobre Esta Tarefa

Para usar o ActiveX para EJB para acessar uma classe Java™, desenvolva seu programa ActiveX para concluir as seguintes etapas:

Procedimento

  1. Crie uma instância do objeto XJB.JClassFactory.
  2. Crie o código da JVM (Java Virtual Machine) no processo do programa ActiveX, chamando o método XJBInit() do objeto XJB.JClassFactory. Depois do programa ActiveX ter criado um objeto XJB.JClassFactory e chamado o método XJBInit(), o código da JVM será inicializado e estará pronto para utilização.
  3. Crie um objeto proxy para a classe Java, utilizando os métodos XJB.JClassFactory FindClass() e NewInstance(). O programa ActiveX pode utilizar o objeto proxy para acessar a classe Java, campos de objetos e métodos.
  4. Chame os métodos na classe Java, utilizando a sintaxe de chamada do método Java e acesse os campos Java conforme necessário.
  5. Utilize as funções auxiliares para fazer a conversão nos casos em que a conversão automática não for possível. É possível converter entre os seguintes tipos de dados:
    • Java Byte e Visual Basic Byte
    • Tipos Visual Basic Currency e Java 64 bits
  6. Implemente métodos para tratar dos erros retornados da classe Java. No Visual Basic ou VBScript, use os campos Err.Number e Err.Description para determinar o erro real do Java.

Exemplo

Visualizando uma mensagem System.out: A ponte ActiveX para Enterprise JavaBeans (EJB) não possui um console disponível para visualizar as mensagens System.out do Java. Para visualizar essas mensagens ao executar um programa cliente independente (como o Visual Basic), redirecione a saída para um arquivo.

O exemplo a seguir ilustra como redirecionar saída para um arquivo:
launchClientXJB.bat MyProgram.exe > output.txt
  • Para visualizar mensagens System.out ao executar um programa de Serviço como o Active Server Pages, substitua o objeto System.out OutputStream de Java por FileOutputStream. Por exemplo, em VBScript:
    'Redirecionar system.out para um arquivo
    ' Suponha que oXJB é um objeto XJB.JClassFactory inicializado
     Dim clsSystem
     Dim oOS
     Dim oPS
     Dim oArgs
    
    ' Obter a classe System
      Set clsSystem = oXJB.FindClass("java.lang.System")
    
    ' Criar um objeto FileOutputStream
    ' Criar um objeto PrintStream e atribuir a ele nosso FileOutputStream
      Set oArgs = oXJB.GetArgsContainer  oArgs.AddObject "java.io.OutputStream", oOS
      Set oPS = oXJB.NewInstance(oXJB.FindClass("java.io.PrintStream"), oArgs)
    
    ' Definir nosso System OutputStream para nosso arquivo
      clsSystem.setOut oPS

Aplicativo cliente ActiveX usando métodos auxiliares para a conversão do tipo de dados. Em geral, a conversão de tipo de dados entre ActiveX (Visual Basic e VBScript) e métodos Java ocorre automaticamente, conforme descrito em Ponte do ActiveX para EJB, convertendo tipos de dados. No entanto, a função auxiliar byte e a função auxiliar currency são fornecidas para casos em que a conversão automática não é possível.

  • Função auxiliar Byte
    Como o tipo de dados Byte de Java é com sinal (-127 a 128) e o tipo de dados Byte do Visual Basic é sem sinal (0 a 255), converta Bytes sem sinal para um Integer de Visual Basic, que se parece com o byte com sinal de Java. Para fazer essa conversão, é possível utilizar a seguinte função auxiliar:
    Private Function GetIntFromJavaByte(Byte jByte) as Integer
    	     GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128
    End Function
  • Função auxiliar Currency
    O Visual Basic 6.0 não pode tratar corretamente inteiros de 64 bits como os métodos Java podem (como o tipo de dados Long). Portanto, o Visual Basic utiliza o tipo Currency, o qual é intrinsecamente um tipo de dados de 64 bits. O único efeito colateral de utilizar o tipo Currency (o tipo Variant VT_CY) é que um ponto decimal é inserido no tipo. Para extrair e manipular o valor Long de 64 bits no Visual Basic, utilize código como o do exemplo a seguir. Para obter mais detalhes sobre essa técnica de conversão de tipos de dados Currency, consulte Q189862, "COMO: Executar a Aritmética de 64 bits em VBA", na Base de Dados de Conhecimento Microsoft.
    ' Tipos Auxiliares Currency
    Private Type MungeCurr
        Value As Currency
    End Type
    Private Type Munge2Long
        LoValue As Long
        HiValue As Long
    End Type
    
    ' Funções Auxiliares de 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
    
    ' Exemplo de Uso de Java Long como Currency
    Dim LC As MungeCurr
    Dim L2 As Munge2Long
    
    ' Atribuir um Valor Currency (realmente um Java Long)
    ' à variável de tipo MungeCurr
    LC.Value = cyTestIn
    
    ' Coagir o valor para a variável de tipo Munge2Long
    LSet L2 = LC
    
    ' Executar alguma operação no valor, agora que
    ' ele está disponível em pedaços de 32 bits
    L2.LoValue = L2.LoValue + 1
    
    ' Coagir o valor de Munge de volta a um valor de currency
    LSet LC = L2
    cyTestIn = LC.Value

O que Fazer Depois

Depois de desenvolver o código do aplicativo cliente ActiveX, implemente e execute o aplicativo ActiveX.

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tcli_developactivex
Nome do arquivo: tcli_developactivex.html