ActiveX クライアント・アプリケーション・コードの開発

WebSphere® ActiveX to EJB ブリッジを使用してエンタープライズ Bean にアクセスするための ActiveX Windows プログラム (例えば Visual Basic、VBScript、Active Server Pages など) を開発します。

始める前に

重要: このトピックでは、 ユーザーが ActiveX プログラミングおよび Windows プラットフォームでの開発に精通していることを前提としています。 ActiveX アプリケーション・クライアントおよび ActiveX to EJB ブリッジのプログラミング概念については、『ActiveX to Enterprise JavaBeans™ (EJB) ブリッジ』トピックとその関連トピックを参照してください。

適切なプログラミングのガイドラインとして、ActiveX to EJB ブリッジに提供されている情報も参考にしてください。

このタスクについて

ActiveX to EJB ブリッジを使用して Java™ クラスにアクセスするには、 ActiveX プログラムを開発して、以下のステップを完了します。

手順

  1. XJB.JClassFactory オブジェクトのインスタンスを作成します。
  2. XJB.JClassFactory オブジェクトの XJBInit() メソッドを呼び出すことによって 、ActiveX プログラム・プロセスに Java 仮想マシン (JVM) コードを作成します。 ActiveX プログラムが XJB.JClassFactory オブジェクトを作成して、 XJBInit() メソッドを呼び出すと、JVM コードが初期化されていつでも使用できるようになります。
  3. XJB.JClassFactory FindClass() メソッドおよび NewInstance() メソッドを使用して、 Java クラスのプロキシー・オブジェクトを作成します。 ActiveX プログラムは、プロキシー・オブジェクトを使用して、 Java クラス、オブジェクト・フィールド、およびメソッドにアクセスできます。
  4. Java メソッド呼び出し構文を使用して Java クラスのメソッドを呼び出し、 必要に応じて Java フィールドにアクセスします。
  5. 自動変換できない場合は、ヘルパー関数を使用して変換を行います。 変換は、以下のデータ型の間で行うことができます。
    • Java バイトと Visual Basic バイト
    • Visual Basic 通貨型と Java 64 ビット
  6. Java クラスから戻されたエラーを処理するメソッドを実装します。 Visual Basic または VBScript では、 Err.Number フィールドと Err.Description フィールドを使用して、 実際の Java エラーを判別します。

System.out メッセージの表示: ActiveX to Enterprise JavaBeans (EJB) ブリッジ には、Java System.out メッセージの表示に使用できる コンソールがありません。スタンドアロン・クライアント・プログラム (Visual Basic など) の実行中 にこれらのメッセージを見るには、出力をファイルに転送してください。

出力をファイルに転送するには、次の例のようにします。
launchClientXJB.bat MyProgram.exe > output.txt
  • Active Server Page などのサービス・プログラムを実行中に System.out メッセージを見るには、 Java System.out OutputStream オブジェクト をオーバーライドして FileOutputStream にします。例えば、VBScript では以下のようになります。
    'Redirect system.out to a file
    ' Assume that oXJB is an initialized XJB.JClassFactory object
     Dim clsSystem
     Dim oOS
     Dim oPS
     Dim oArgs
    
    ' Get the System class
      Set clsSystem = oXJB.FindClass("java.lang.System")
    
    ' Create a FileOutputStream object
    ' Create a PrintStream object and assign to it our FileOutputStream
      Set oArgs = oXJB.GetArgsContainer  oArgs.AddObject "java.io.OutputStream", oOS
      Set oPS = oXJB.NewInstance(oXJB.FindClass("java.io.PrintStream"), oArgs)
    
    ' Set our System OutputStream to our file
      clsSystem.setOut oPS

データ型変換のためのヘルパー・メソッドを 使用する ActiveX クライアント・アプリケーション。通常、ActiveX (Visual Basic および VBScript) と Java メソッドの間のデータ型変換は、 『ActiveX to EJB ブリッジによるデータ型の変換』で説明しているように自動的に行われます。 ただし、自動変換が不可能な場合に備えて、バイト・ヘルパー関数と通貨ヘルパー 関数が用意されています。

  • バイト Helper 関数
    Java バイト・データ型は符号付き (-127 から 128) であり、 Visual Basic バイト・データ型は符号なし (0 から 255) であるため、 符号なしのバイトを Visual Basic 整数に変換します。 これは、外観が Java の符号付バイトに似ています。 この変換を行うには、以下の Helper 関数を使用することができます。
    Private Function GetIntFromJavaByte(Byte jByte) as Integer
    	     	     GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128
    End Function
  • 通貨 Helper 関数
    Visual Basic 6.0 は、 Java メソッドのように 64 ビット整数を正しく処理することはできません (Long データ型として)。 したがって、Visual Basic は、本来は 64 ビット・データ型の通貨型を使用します。 通貨型 (バリアント型 VT_CY) を使用する場合の唯一の副次作用は、小数点が型に挿入されることです。 Visual Basic の 64 ビットの Long 値を抽出し、取り扱うには、次の例のようなコードを使用します。 通貨データ型を変換するためのこの技法について詳しくは、 Microsoft 知識ベースの Q189862 "HOWTO: Do 64-bit Arithmetic in VBA" を参照してください。
    ' 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

次のタスク

ActiveX クライアント・アプリケーション・コードを開発したら、ActiveX アプリケーションをデプロイおよび実行します。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tcli_developactivex
ファイル名:tcli_developactivex.html