[式としての外部 Jar パス]フィールドで必要な外部 JAR へのパスのリストを提供するために選択します。
式、すなわち[式としての外部 Jar パス]フィールドのデータセット変数として、必要な外部 JAR へのパスを提供する場合は、オフにします。
このチェック ボックスはデフォルトでオンになっています。
オペレータのメイン メソッド コードによって必要とされる外部 JAR へのパスのリストを、存在する場合に、指定します。
Java の呼び出しオペレータは、このフィールドにリストされた JAR をロードします。 このリスト内に入力されたすべての JAR は、オペレータによって実行される Java コードで利用可能です。 オペレータ レベル JAR に定義されたクラスは、オペレータ カテゴリ レベルの JAR に指定された同じクラスに優先します。
各パスで次の操作を実行できます。
JAR ファイルの相対パスを、次の文字で開始しないでください。
これらの文字で開始すると、CA Process Automation は JAR ファイル パスをフル パスと見なします。
ユーザ リソースを含む CA Process Automation 内のリソースは、エージェントのミラーリング間隔でミラーリングされます。 ユーザ リソースでアップロードされた JAR を Java の呼び出しオペレータで使用する前に、すでにミラーリングされていることを確認します。
外部 JAR に加えて、以下のように .class ファイルをロードできます。
たとえば、MyAccount.java がパッケージに属さず、MyAccount.class が次の場所にあるとします。
C:¥java¥tests¥MyAccount.class
この場合、以下のパスを使用するようにオペレータを設定します。
C:¥¥java¥¥tests
たとえば、MyAccount.java がパッケージ com.ca.tech に属し、MyAccount.class が C:¥java¥othertests¥com¥ca¥tech¥MyAccount.class にあるとします。
この場合、以下のパスを使用するようにオペレータを設定します。
C:¥¥java¥¥othertests
(.class ファイルをロードするための)ディレクトリへのパスを指定する場合は、フル パスとして入力します。 また、CA Process Automation ユーザ リソースへの相対パスとして入力することもできます。 パスは、HTTP パスとしては入力しません。
JAR ファイルではなく .class ファイルをロードするためのディレクトリへのパスを指定します。 .class ファイルと異なり、JAR ファイルはそれぞれ、そのファイルが存在するディレクトリではなく、JAR ファイルで終わる個別のパスを必要とします。
オペレータのメイン メソッド コードで必要な外部 JAR へのパスのリストが含まれる、索引付き文字列データセット変数が存在する場合は、指定します。
[必要な main メソッド]フィールドで Java コードを指定する場合は、オンにします。
Java コードを、[Required Main Method as Expression]フィールドのデータセット変数として指定する場合は、オフにします。
このチェック ボックスはデフォルトでオンになっています。
メイン メソッドの Java コード テキストを指定します。 このコードが含まれる任意のファイルを見つけるために参照できます。 メイン メソッドは通常の Java ステートメントと式で構成されます。 Java SDK または外部 JAR で定義されたオブジェクトを初期化して使用する必要があります。
注: ユーザが[OK]をクリックすると、CA Process Automation はコードを解析し、その構造の検証を確認します。 コードの構造にエラーが見つかった場合は、エラー メッセージが表示されます。
「Java コードの実行オペレータの Java コード」を参照してください。
メイン メソッドの内容が含まれるデータセット変数を指定します。 メイン メソッドは通常の Java ステートメントと式で構成されます。 Java SDK または外部 JAR で定義されたオブジェクトを初期化して使用する必要があります。 構造的な検証は実行されません。
「Java コードの実行オペレータの Java コード」を参照してください。
メイン メソッド/外部 jar が Java コンテキスト クラス ローダに依存してクラスをロードする場合は、このフィールドを(デフォルトとは異なる値に)設定します。 ClassCastException を回避するため、Java コンテキスト クラス ローダを、オペレータ クラス ローダまたはモジュール クラス ローダのいずれかに設定します。
Java の呼び出しオペレータは、一連のクラス ローダを使用して、Java コードの実行中にクラスをロードします。 この一連のクラス ローダは、以下のように構成されています(他にもクラス ローダがあります)。
オペレータは順に各クラス ローダを確認し、クラスが見つからない場合は次のクラス ローダに進みます。
実行するコードが明示的に自身のクラス ローダを使用してクラスをロードしない限り、この一連のクラス ローダが機能します。 この場合、ログに「ClassCastException」が含まれます。
例:
クラス MyChildXMLParser はクラス MyParentXMLParser の拡張であるとします。 以下のコード フラグメントは、Java ファクトリを使用して MyParentXMLParser を作成します。 このファクトリは実際に MyChildXMLParser をロードして作成します。その後、それは MyParentXMLParser オブジェクトにキャストされます。
public MyParentXMLParser() {
super((MyParentXMLParser)ObjectFactory.createObject("com.ca.parser.MyChildXMLParser"));
....
}
この例では、以下について考慮してください。
この問題を解決するには、フィールド[コンテキスト クラス ローダを設定]を以下のいずれかに設定します。
注: Java コードが明示的に自身のクラス ローダを使用してクラスをロードしない他のすべての場合、"0: デフォルト" が使用されます。 この値はこのフィールドのデフォルト値です。
コンテキスト クラス ローダを[Java の呼び出し]オペレータのクラス ローダに設定することによって、ユーザのコードによってコールされる Java ファクトリは、[Java の呼び出し]オペレータ クラス ローダを使用することを強制されます。 この動作により、ClassCastException が回避されます。
|
Copyright © 2013 CA.
All rights reserved.
|
|