J2C Java komponensek összeépítése Ant parancsfájlok segítségével

J2C komponensek meghívására használhat Ant parancsfájlokat, amelyek a munkaterületről vagy a parancssorból is hívhatók.

Vannak olyan helyzetek, amikor Java komponenseit és/vagy adatkötés komponenseit újra létre kívánja hozni (ha például COBOL másolatkönyv új mezőt ad hozzá). Ez Ant definíciós fájl használatával érhető el, amely a felhasználó és az alapul szolgáló J2C összetevő közötti együttműködést színleli.

A J2C varázsló Ant konfigurációs fájl gyorsan létrehozását teszi lehetővé a kiválasztások és beírt értékek lementésével. Mivel az Ant konfigurációs fájl lényegében XML fájl, ezért módosítása vagy összeépítése teljesen kézi úton valósítható meg.

Az Ant konfigurációs fájl egy cél fából áll, ahol a különféle feladatok futnak. Célon belüli feladatok csővezetékszerűen kerülnek feldolgozásra. Minden feladatot objektum futtat, amely adott feladat felületet valósít meg. Amikor az Ant konfigurációs fájl meghívásra kerül, akkor a minden egyes feladat megfelelő tulajdonságai a megvalósító feladat objektumába kerülnek betöltésre. Az információk betöltése után a feladat objektum meghívásra kerül.

Adatok feltérképezése feladat

Általában a feltérképezési ciklus két lépést foglal magában, amelyek mindegyikét különálló összetevő hajtja végre:
  • • Feltérképezési ügynökök hajtják végre a tényleges adatimportálást (lásd: performImport feladat a példa parancsfájlban), amelynek során importálási eredménynek nevezett nem nyilvános metaadatokat hoznak létre
  • • Az importálási eredményeket erőforrás-írók használják fel (lásd: writeToWorkspace feladat a példa parancsfájlban) a megfelelő alkalmazás műtermékek előállításához.
Az importálási és előállítási lépések során a Feltérképezési ügynök és az Erőforrás-író számos felhasználói adatbevitelt követelnek meg. A lekérdezési fázisban például minden Feltérképezési ügynök eltérő paraméterkészlettel fog rendelkezni, amelyek segítségével a megfelelő metaadat-lerakaton lekérdezést definiálnak. A Feltérképezési ügynök és az Erőforrás-író különböző módokon párosítható a kívánt műtermék importálása vagy előállítása céljából. A nevük (QName) alapján kerülnek azonosításra. A Cobol Feltérképezési ügynök például a következő név alapján azonosítható: {com/ibm/adapter}CobolDiscoveryAgent
Az alábbi példa parancsfájl a J2C java felület, a J2C java megvalósítás, valamint a taderc99.cbl COBOL fájlon alapuló adatkötés osztályok előállítását, továbbá az ECIResourceAdapter 6.0.2 verziójának importálását mutatja be.
<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. Az Ant parancsfájl Importálás szakasza a következőképpen néz ki:
    <discoveryAgent type="DiscoveryAgentName">
    		<importResource name="PropertyName" value="PropertyValue"/>
    		<importProperties>
    			<propertyElement name="PropetyName" value="PropertyValue"/>
    		</importProperties>
    		<searchParameters>
    			<propertyElement name="ParameterName"/>
    		</searchParameters>
    </discoveryAgent>
    Ahol:
    • a discoveryAgent az importáláshoz használt Feltérképezési ügynök neve
    • az importResource az importálandó erőforrás
    • a queryProperties olyan paraméterek listája, amelyek a metaadat-lerakaton kialakítandó lekérdezéshez szükséges információkat képviselik
    • a searchParameters a kiválasztott csomópontok az eredmény fában, amelyek az importáláshoz szükségesek, mint alkalmazás műtermékek
    • a propertyElement egy lista (tulajdonságnév és tulajdonságérték párok)
  2. Az alkalmazás műtermék importálásához az importált eredmények felhasználási módját ismerő Erőforrás-író kerül meghívásra. COBOL típus importálás után például csak olyan író használható, amely a COBOL típus importálási eredményeinek felhasználási módját ismeri. Az Ant parancsfájl Írás szakasza a következőképpen néz ki:
    <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>
    Ahol:
    • a workspaceResourceWriter az alkalmazás műtermékek előállítására használt író neve
    • a propertyElement olyan lista (tulajdonságnév és tulajdonságérték párok listája), amelyet az író az előállításhoz használ
  3. Abban a speciális esetben, ha nyelvi importálásról van szó (COBOL, C vagy PL/I), akkor további lépés szükséges: a Kötés előállítás. Az Ant parancsfájl Kötés szakasza a következőképpen néz ki:
    <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. A resourceAdapter a következő módon is definiálható:
    <resourceAdapter>
         <propertyElement name="displayName" value="PropertyValue"/>
         <propertyElement name="version" value="PropertyValue"/>
         <propertyElement name="vendorName" value="PropertyValue"/>
    </resourceAdapter>
    Ahol:
    • a createBinding a csomag és a felület kötés osztály nevét definiálja
    • a methodElement az EIS elérésére szolgáló Java metódus neve
      • a name a metódus neve
      • az input a bemeneti típus
      • az output a kimeneti típus
      • az interactioSpec az együttműködési tulajdonságok felsorolása
    • a connectionSpec a kapcsolattulajdonságok felsorolása
    • a resourceAdapter a használt erőforrás illesztő akár a projektnév, akár tulajdonságlista megadásával
  5. A tulajdonságok beállítása után ideje futtatni az alapul szolgáló alkalmazás programozási felületet meghívó parancsot az importálás, vagy a műtermék előállításának végrehajtása céljából.
Megjegyzés: Ant parancsfájl használatakor vegye figyelembe a következő irányelveket:
  • Ha Ant parancsfájlban erőforrás illesztőt hív meg, akkor az Ant parancsfájl meghívása előtt az erőforrás illesztőt importálni kell a munkaterületre.
  • Bármely felhasznált erőforrásnak akár a munkaterületre és a projektre mutató fájl elérési úttal, akár teljes rendszer elérési úttal kell rendelkeznie.
  • A Feltérképezési ügynökökre és Munkaterület-írókra egyedi nevük (QName) alapján hivatkoznak. Az összes Feltérképezési ügynök, Munkaterület erőforrás-író és Importálási konfiguráció megkereséséhez használja a parancsfájl könyvtárban található displayAll.xml parancsfájlt.
  • Bizonyos elemek név-érték pár attribútummal rendelkeznek. A név valójában a Feltérképezési ügynök vagy Erőforrás-író által belsőleg definiált tulajdonság és az érték továbbadására használják. Fontos a helyes név használata. Ha az összetevő a nevet nem, ismeri fel, akkor az érték nem lesz beállítva. Ezek az attribútumok minden esetben propertyElement címke részei, amely egy a többhöz multiplicitással rendelkezik. Ugyanez a multiplicitás vonatkozik a methodElement címkére is.
A következő példa parancsfájl adatkötést állít elő a megadott (taderc99.ccp) COBOL fájl alapján. A parancsfájl a parancsfájl könyvtárban, a com.ibm.adapter.command bedolgozóban található.
<?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> 
Ahol:
  • az • importResource az importálandó erőforrást határozza meg
  • a • queryProperties olyan paraméterek listája, amelyek a metaadat-lerakaton kialakítandó lekérdezéshez szükséges információkat képviselik
  • a managedConnectionFactory a kapcsolatgyár tulajdonságait határozza meg
  • a • queryResult a kiválasztott csomópontok az eredmény fában, amelyek az importáláshoz szükségesek, mint alkalmazás műtermékek
  • a • propertyGroup a tulajdonságokat és azok értékét tartalmazó szerkezet

Szolgáltatás előállítása feladat

Abban a speciális esetben, ha nyelvi importálásról van szó (COBOL, C vagy PL/I), akkor további lépés szükséges: a Felület kötés előállítása. A következő példa a J2C komponens előállításához használt Ant parancsfájl feltérképezési szakaszát írja le:

<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>
Ahol:
  • a buildService a csomag és a felület kötés osztály nevét határozza meg
  • a method az EIS elérésére szolgáló Java™ metódus
    • a methodName a metódus neve
    • a methodInput a bemeneti típus
    • a methodOutput a kimeneti típus
    • az interactionSpec az együttműködési tulajdonságok felsorolása
  • a managedConnectionFactory a kapcsolatgyár tulajdonságait határozza meg
  • a connectionSpec a felhasznált kapcsolatosztály
  • a resourceAdapter a használt erőforrás illesztő akár a projektnév, akár tulajdonságlista megadásával

További feladatok

Ezek segédprogram feladatok, hasznosak, de nem kötelezőek a műtermék előállításához

A createProject feladat a munkaterület projekt létrehozására használható.
<adapter:createProject 
		projectName="taderc99Project" 
		projectType="Web" 
		runtimeName="J2EE Runtime Library"
		addToEAR="yes"
		EARProjectName="TestEAR"/>
Ahol:
  • a projectName a projekt neve
  • a projectType a típus, ami Java, Web és EJB lehet, a kis- és nagybetűk egyformának számítanak
  • a runtimeName (nem kötelező) a futási környezet neve, ahogyan az Ablak->Beállítások->Kiszolgáló->Telepített futási környezetek lehetőség alatt meg van adva
  • az addToEAR (nem kötelező) érvényes értékei a következők:
    • igen
    • nem
    • igaz
    • hamis
  • az EARProjectName (nem kötelező) az EAR projekt neve
Az importResourceAdapter feladat segítségével kapcsolat projekt hozható létre.
<j2c:importResourceAdapter 
		connectorModule="cicseci602"
		connectorFile="D:\IBM\SDP70\ResourceAdapters\cics15\cicseci602.rar" 
		targetRuntime="J2EE Runtime Library"
		addToEAR="yes"
		EARProjectName="TestEAR"/>
Ahol:

Tulajdonságok meghatározása

A Feltérképezési ügynökökre és Munkaterület-íróra egyedi nevük (QName) alapján hivatkoznak. Az összes Feltérképezési ügynök, Munkaterület erőforrás-író és Importálási konfiguráció megkereséséhez használja a parancsfájl könyvtárban található displayAll.xml parancsfájlt.

Ahogyan a példa parancsfájlokban megfigyelhető, a feltérképezési ügynököknek vagy erőforrás-íróknak átadott értékeket a propertyGroup és propertyElement címkék határozzák meg. A tulajdonságcsoport logikai csoportosítást definiál beágyazott szerkezeten keresztül. A szerkezeti elrendezés, valamint a tartalmazott csoport- és tulajdonságnevek leírása a feltérképezési ügynök vagy az erőforrás-író dokumentációjában található.

A tulajdonságokat név-érték pár attribútumok definiálják. A név valójában a feltérképezési ügynök vagy erőforrás-író által belsőleg definiált tulajdonság és az érték továbbadására használják. Fontos a helyes név használata. Ha az összetevő a nevet nem, ismeri fel, akkor az érték nem lesz beállítva.


Visszajelzés