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
Considere as informações fornecidas em Ponte ActiveX para EJB como boas diretrizes de programação.
Sobre Esta Tarefa
Procedimento
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.
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