Ant スクリプトを使用した J2C Java Bean のビルド

Ant スクリプトを使用して J2C コンポーネントを起動できます。これらの Ant スクリプトはワークベンチからもコマンド行からも呼び出すことができます。

場合によっては、J2C Java™ Bean および/またはデータ・バインディング Bean を再作成する必要があります (例えば、ご使用の COBOL コピーブックに新しいフィールドを追加する場合など)。この操作は、基盤となる J2C コンポーネントとユーザーの相互作用にならった Ant 定義ファイルを使用して行うことができます。

J2C ウィザードを使用すれば、選択内容および入力値を取得して、Ant 構成ファイルを素早く作成できます。Ant 構成ファイルは本質的に XML ファイルであるため、 手作業で全体を変更またはビルドすることができます。

Ant 構成ファイルは、さまざまなタスクが実行されるターゲット・ツリーから構成されています。 ターゲット内のタスクは、パイプライン方法で処理されます。 各タスクは、特定のタスク・インターフェースを実装するオブジェクトによって実行されます。 Ant 構成ファイルが呼び出されると、各タスクに対応したプロパティーが実装しているタスク・オブジェクトにロードされます。 情報がロードされると、タスク・オブジェクトが呼び出されます。

データ・ディスカバリー・タスク

一般に、 ディスカバリー・サイクル中に関与するステップは 2 つあり、それぞれのステップは別個のコンポーネントによって行われます。
  • ・ディスカバリー・エージェントは、データのインポートを実際に実行し (スクリプトの例の performImport タスクを参照)、インポート結果 と呼ばれる専有メタデータを作成します。
  • ・リソース書き込み機能は、インポート結果をコンシュームして (スクリプトの例の writeToWorkspace タスクを参照)、適切なアプリケーション成果物を作成します。
ディスカバリー・エージェントおよびリソース書き込み機能には、インポートおよび生成ステップ中にユーザー入力のセットを提供する必要があります。 例えば、照会段階で、ディスカバリー・エージェントにはそれぞれ、対応するメタデータ・リポジトリーでの照会を定義するのに使用される、異なるセットのパラメーターがあります。 ディスカバリー・エージェントとリソース書き込み機能は、望ましい成果物をインポートおよび生成するために、 さまざまな方法で組み合わせることができます。 これらは名前 (QName) で識別されます。例えば、 Cobol ディスカバリー・エージェントは、{com/ibm/adapter}CobolDiscoveryAgent という名前で識別できます。
以下のスクリプトの例は、J2C Java インターフェース、J2C Java 実装、および taderc99.cbl COBOL ファイルに基づくデータ・バインディング・クラスを生成する方法と、 ECIResourceAdapter バージョン 6.0.2 のインポートについて示しています。
<adapter:discover>
	<adapter:performImport agent="{com/ibm/adapter}CobolDiscoveryAgent">
		<adapter:importResource>
			<adapter:propertyGroup name="CobolFileGroup">
				<adapter:propertyElement name="CobolFile" value="/${project}/taderc99.ccp"/>
			</adapter:propertyGroup>
		</adapter:importResource>
		<adapter:queryProperties>
			<adapter:propertyGroup name="ImportProperties">
				<adapter:propertyElement name="Platform" value="Win32"/>
			</adapter:propertyGroup>
		</adapter:queryProperties>
		<adapter:queryResult>
			<adapter:selectElement name="DFHCOMMAREA"/>
		</adapter:queryResult>
	</adapter:performImport>
	<adapter:writeToWorkspace writer="{com/ibm/adapter/cobol/writer}JAVA_WRITER">
		<adapter:propertyGroup name="COBOLToJavaResourceWriter">
			<adapter:propertyElement name="GenerationStyle" value="0"/>
			<adapter:propertyGroup name="Java Type Name">
				<adapter:propertyElement name="Overwrite existing class" value="true"/>
				<adapter:propertyElement name="Project Name" value="${project}"/>
				<adapter:propertyElement name="Package Name" value="com.ibm.test"/>
				<adapter:propertyElement name="Class Name" value="Taderc99"/>
			</adapter:propertyGroup>
		</adapter:propertyGroup>
	</adapter:writeToWorkspace>
</adapter:discover>
  1. Ant スクリプトの「インポート」セクションは、次のようになる。
    <discoveryAgent type="DiscoveryAgentName">
    		<importResource name="PropertyName" value="PropertyValue"/>
    		<importProperties>
    			<propertyElement name="PropetyName" value="PropertyValue"/>
    		</importProperties>
    		<searchParameters>
    			<propertyElement name="ParameterName"/>
    		</searchParameters>
    </discoveryAgent>
    ここで、
    • discoveryAgent は、インポートに使用されるディスカバリー・エージェントの名前
    • importResource は、インポートされるリソース
    • queryProperties は、メタデータ・リポジトリーに対する照会の構成に必要な情報を表すパラメーターのリスト
    • searchParameters は、アプリケーション成果物としてインポートするために望ましい結果ツリーの select ノード
    • propertyElement は、リスト (プロパティー名とプロパティー値のペア)
  2. アプリケーション成果物を生成するために、インポートされた結果を利用することを理解しているリソース書き込み機能が呼び出される。 例えば、タイプ COBOL のインポート後には、COBOL タイプのインポート結果を利用することを理解している書き込み機能のみを使用することができます。 Ant スクリプトの「Write」セクションは、次のようになります。
    <adapter:writeToWorkspace writer="{com/ibm/adapter/cobol/writer}JAVA_WRITER">
    <adapter:propertyGroup name="COBOLToJavaResourceWriter">
    <adapter:propertyGroup name="Java Type Name">
    <adapter:propertyElement name="Project Name" value="${project1}"/>
    <adapter:propertyElement name="Package Name" value="sample.cics"/>
    <adapter:propertyElement name="Class Name" value="DFHCOMMAREA"/>
    </adapter:propertyGroup>
    </adapter:propertyGroup>
    </adapter:writeToWorkspace>
    ここで、
    • workspaceResourceWriter は、アプリケーション成果物を生成するために使用される書き込み機能の名前
    • propertyElement は、書き込み機能が生成に使用するリスト (プロパティー名とプロパティー値のペア)
  3. 言語インポート (COBOL、C および PL/I) の特殊な場合には、追加ステップとしてバインディング生成がある。 Ant スクリプトの「Binding」セクションは、次のようになります。
    <createBinding package="PackageName" class="ClassName">
        <methodElement>
            <name value="MethodName"/>
            <input value="Input"/>
            <output value="Output"/>
            <interactioSpec>
                <propertyElement name="PropertyName" value="PropetyValue"/>
            </interactioSpec>
        </methodElement>
        <connectionSpec>
            <propertyElement name="PropertyName" value="PropertyValue"/>
        </connectionSpec>
        <resourceAdapter project="ResourceAdapterProjectName"/>
    </createBinding>
  4. resourceAdapter は、次の方法でも定義できます。
    <resourceAdapter>
         <propertyElement name="displayName" value="PropertyValue"/>
         <propertyElement name="version" value="PropertyValue"/>
         <propertyElement name="vendorName" value="PropertyValue"/>
    </resourceAdapter>
    ここで、
    • createBinding は、パッケージおよびインターフェース・バインディング・クラス名を定義する
    • methodElement は、EIS にアクセスするための Java メソッド
      • name は、メソッド名
      • input は、入力型
      • output は、出力型
      • interactioSpec は、相互作用プロパティーのリスト
    • connectionSpec は、接続プロパティーのリスト
    • resourceAdapter は、プロジェクト名またはプロパティーのリストを指定することによって使用されるリソース・アダプター
  5. プロパティーが設定された後で、基盤となる API を呼び出すコマンドを実行し、インポートまたは成果物生成を行う。
注: Ant スクリプトを使用する際は、以下のガイドラインに留意してください。
  • Ant スクリプトでリソース・アダプターを呼び出す場合は、 Ant スクリプトを起動する前にワークスペースにリソース・アダプターをインポートする必要がある。
  • 使用されるリソースには、ワークスペースおよびプロジェクトを指すファイル・パスか、 またはフル・ファイル・システム・パスがなければならない。
  • ディスカバリー・エージェントおよびワークスペース書き込み機能は、一意的に識別される名前 (QName) で参照される。 すべての登録済みディスカバリー・エージェント、ワークスペース・リソース書き込み機能、およびインポート構成 を検索するには、スクリプト・ディレクトリーにある displayAll.xml スクリプトを使用してください。
  • 一部の要素には、name 属性と value 属性のペアがある。名前は実際には、ディスカバリー・エージェントまたはリソース書き込み機能によって内部的に定義されたプロパティーであり、値を渡すために使用されます。 正しい名前を使用することが重要です。 名前がコンポーネントによって認識されないと、値は設定されません。 いかなる場合も、これらの属性は 1 対多の多重度を持つ propertyElement タグの一部です。 同じ多重度が methodElement タグにも適用されます。
以下のスクリプトの例は、指定された (taderc99.ccp) COBOL ファイルに基づいてデータ・バインディングを生成します。このスクリプトは、com.ibm.adapter.command プラグイン、script ディレクトリーにあります。
<?xml version="1.0" encoding="UTF-8" ?>
  <project xmlns:adapter="http://com.ibm.adapter" default="DataBinding1" name="/Taderc99/CustomerInfo.xml">
    <property name="debug" value="true" />
    <property name="project1" value="Taderc99" />
    <target name="DataBinding1">
  <adapter:createProject projectName="${project1}" projectType="Java" />
    <adapter:discover>
    <adapter:performImport agent="{com/ibm/adapter}CobolDiscoveryAgent">
    <adapter:importResource>
    <adapter:propertyGroup name="CobolFileGroup">
  <adapter:propertyElement name="CobolFile" value="C:¥Samples¥CICS¥taderc99¥taderc99.cbl" />
  </adapter:propertyGroup>
  </adapter:importResource>
    <adapter:queryProperties>
    <adapter:propertyGroup name="ImportProperties">
  <adapter:propertyElement name="Platform" value="Win32" />
  <adapter:propertyElement name="Codepage" value="ISO-8859-1" />
  <adapter:propertyElement name="Numproc" value="PFD" />
  <adapter:propertyElement name="FloatingPointFormat" value="IEEE 754" />
    <adapter:propertyGroup name="ExternalDecimalSignGroup">
  <adapter:propertyElement name="ExternalDecimalSign" value="ASCII" />
  </adapter:propertyGroup>
    <adapter:propertyGroup name="EndianGroup">
  <adapter:propertyElement name="Endian" value="Little" />
  <adapter:propertyElement name="RemoteEndian" value="Little" />
  </adapter:propertyGroup>
    <adapter:propertyGroup name="CompileOptions">
  <adapter:propertyElement name="Quote" value="DOUBLE" />
  <adapter:propertyElement name="Trunc" value="STD" />
  <adapter:propertyElement name="Nsymbol" value="DBCS" />
  </adapter:propertyGroup>
  </adapter:propertyGroup>
  </adapter:queryProperties>
    <adapter:queryResult>
  <adapter:selectElement name="DFHCOMMAREA" />
  </adapter:queryResult>
  </adapter:performImport>
    <adapter:writeToWorkspace writer="{com/ibm/adapter/cobol/writer}JAVA_WRITER">
    <adapter:propertyGroup name="COBOLToJavaResourceWriter">
  <adapter:propertyElement name="GenerationStyle" value="Default" />
    <adapter:propertyGroup name="Java Type Name">
  <adapter:propertyElement name="Project Name" value="${project1}" />
  <adapter:propertyElement name="Package Name" value="sample.cics" />
  <adapter:propertyElement name="Class Name" value="CustomerInfo" />
  <adapter:propertyElement name="Overwrite existing class" value="true" />
  </adapter:propertyGroup>
  </adapter:propertyGroup>
  </adapter:writeToWorkspace>
  </adapter:discover>
  <eclipse.refreshLocal depth="infinite" resource="${project1}" />
  <eclipse.incrementalBuild project="${project1}" />
  </target>
  </project> 
ここで、
  • importResource は、インポートされるリソースを定義する
  • queryProperties は、メタデータ・リポジトリーに 対する照会を構成するために必要な情報を表すパラメーター
  • managedConnectionFactory は接続ファクトリーのプロパティーを定義する
  • queryResult は、結果ツリーで選択されているノード。このノードは、アプリケーション成果物としてインポートするべきものです。
  • propertyGroup は、プロパティーとその値を含む構造

サービス生成タスク

言語インポート (COBOL、C、および PL/1) の特殊な場合 には、インターフェース・バインディング生成に関連する追加ステップがあります。以下の例は、 J2C Bean 生成に使用される Ant スクリプトのデータ・ディスカバリー・セクションを示します。

<j2c:generateService>
	<j2c:buildService package="com.ibm.test" class="Taderc99Interface">
		<j2c:method>
			<j2c:methodName value="gettaderc99"/>
			<j2c:methodInput value="${project}/com/ibm/test/Taderc99.java">
				<j2c:argumentBinding property="commareaLength" propertyType="InteractionSpec" name="length" type="int"/>
			</j2c:methodInput>
			<j2c:methodOutput value="${project}/com/ibm/test/Taderc99.java"/>
			<j2c:interactionSpec class="com.ibm.connector2.cics.ECIInteractionSpec">
				<adapter:propertyGroup name="InteractionSpec property group">
					<adapter:propertyElement name="functionName" value="TADERC99"/>
				</adapter:propertyGroup>
			</j2c:interactionSpec>
		</j2c:method>
		<j2c:managedConnectionFactory class="com.ibm.connector2.cics.ECIManagedConnectionFactory" target="myJNDIName">
			<adapter:propertyGroup name="Managed connection property group">
				<adapter:propertyGroup name="Server">
					<adapter:propertyElement name="ConnectionURL" value="rubicon.torolab.ibm.com"/>
					<adapter:propertyElement name="ServerName" value="rubicon"/>
				</adapter:propertyGroup>
				<adapter:propertyGroup name="UserVerification">
					<adapter:propertyElement name="UserName" value="sysad"/>
					<adapter:propertyElement name="Password" value="sysad"/>
				</adapter:propertyGroup>
			</adapter:propertyGroup>
		</j2c:managedConnectionFactory>
		<j2c:connectionSpec class="com.ibm.connector2.cics.ECIConnectionSpec"/>
		<j2c:resourceAdapter project="CICS ECI"/>
	</j2c:buildService>
	<adapter:writeToWorkspace writer="com/ibm/adapter/j2c/codegen:J2CAnnotationWriter">
		<adapter:propertyGroup name="J2C Writer Properties">
			<adapter:propertyElement name="Project" value="${project}"/>
			<adapter:propertyElement name="InterfaceName" value="Taderc99Interface"/>
			<adapter:propertyElement name="BindingName" value="Taderc99Binding"/>
			<adapter:propertyElement name="PackageName" value="com.ibm.test"/>
			<adapter:propertyGroup name="CommandBean">
				<adapter:propertyGroup name="gettaderc99">
					<adapter:propertyElement name="EnableGenerate" value="true"/>
					<adapter:propertyElement name="CommandBeanName" value="Taderc99CICSECIServiceProxy"/>
					<adapter:propertyElement name="Input" value="Taderc99Part"/>
					<adapter:propertyElement name="Output" value="Taderc99Part"/>
				</adapter:propertyGroup>
			</adapter:propertyGroup>
		</adapter:propertyGroup>
    </adapter:writeToWorkspace>
</j2c:generateService>
ここで、
  • buildService は、パッケージおよびインターフェース・バインディング・クラス名を定義する
  • method は、EIS にアクセスするための Java™ メソッド
    • methodName はメソッド名
    • methodInput は入力型
    • methodOutput は出力型
    • interactionSpec は相互作用プロパティーのリスト
  • managedConnectionFactory は接続ファクトリーのプロパティーを定義する
  • connectionSpec は使用される接続クラス
  • resourceAdapter は、プロジェクト名または プロパティーのリストを指定することによって使用されるリソース・アダプター

追加タスク

以下のユーティリティー・タスクは役に立ちますが、成果物の生成に必須ではありません。

createProject タスクをワークスペース・プロジェクトの作成に使用できます。
<adapter:createProject
		projectName="taderc99Project"
		projectType="Web"
		runtimeName="J2EE Runtime Library"
		addToEAR="yes"
		EARProjectName="TestEAR"/>
ここで、
  • projectName はプロジェクトの名前です
  • projectType のタイプは、Java、Web および EJB (大/小文字を区別しない)
  • runtimeName (オプション) は、 「ウィンドウ」>「設定」>「サーバー」>「インストール済みランタイム」で定義されるランタイムの名前
  • addToEAR (オプション) の有効な値は次のとおりです
    • yes
    • no
    • true
    • false
  • EARProjectName (オプション) は EAR プロジェクト名です
importResourceAdapter タスクをコネクター・プロジェクトの作成に使用できます。
<j2c:importResourceAdapter 
		connectorModule="cicseci602"
		connectorFile="D:¥IBM¥SDP70¥ResourceAdapters¥cics15¥cicseci602.rar" 
		targetRuntime="J2EE Runtime Library"
		addToEAR="yes"
		EARProjectName="TestEAR"/>
ここで、

プロパティーの定義

ディスカバリー・エージェントおよびワークスペース書き込み機能は、 一意的に識別される名前 (QName) で参照されます。 すべての登録済みディスカバリー・エージェント、ワークスペース・リソース書き込み機能、およびインポート構成 を検索するには、サンプル・ディレクトリーにある displayAll.xml スクリプトを使用してください。

スクリプトの例で見たように、ディスカバリー・エージェントま たはリソース書き込み機能に渡される値は、propertyGroup および propertyElement タグで定義されます。プロパティー・グループは、ネスト構造 を介して、プロパティーの論理的なグループ化を定義します。 構造レイアウトと、包含されているグループ名およびプロパティー名については、 ディスカバリー・エージェントまたはリソース書き込み機能の資料を参照してください。

プロパティーは 、name 属性と value 属性のペアによって定義されます。名前は実際には、 ディスカバリー・エージェントまたはリソース書き込み機能によって内部的に定義されたプロパティーであり、 値を渡すために使用されます。正しい名前を使用することが重要です。 名前がコンポーネントによって認識されないと、値は設定されません。


フィードバック