Мастеры J2C, отслеживающие выбираемые опции и вводимые значения, позволяют быстро создать файл конфигурации Ant. Поскольку файл конфигурации Ant соответствует формату XML, при необходимости его можно создать или изменить вручную.
Файл конфигурации Ant состоит из дерева целевых объектов, в которых выполняются различные задачи. Для обработки задач, связанных с целевым объектом, применяется конвейер. Каждая задача запускается объектом, который реализует конкретный интерфейс. При вызове файла конфигурации Ant в реализующие объекты задач загружаются свойства соответствующих задач. После загрузки информации вызывается объект задачи.
Задача поиска данных
<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>
<?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>
Задача создания службы
В специальном случае импорта исходных файлов (COBOL, C и PL/I) дополнительно требуется создать связывание интерфейса. В следующем примере показан раздел поиска данных сценария Ant, применяемый для создания объекта J2C Java:
<j2c:generateService>
<j2c:buildService class="Customer" package="sample.cics">
<j2c:method>
<j2c:methodName value="getCustomer"/>
<j2c:methodInput value="/Test/src/sample/cics/data/CustomerInfo.java"/>
<j2c:methodOutput value="/Test/src/sample/cics/data/CustomerInfo.java"/>
<j2c:interactionSpec class="com.ibm.connector2.cics.ECIInteractionSpec">
<adapter:propertyGroup name="INTERACTION_SPEC_PROPERTY_PG">
<adapter:propertyElement name="functionName" value="taderc99"/>
<adapter:propertyElement name="commareaLength" value="-1"/>
<adapter:propertyElement name="replyLength" value="-1"/>
<adapter:propertyElement name="executeTimeout" value="0"/>
<adapter:propertyElement name="interactionVerb" value="1"/>
</adapter:propertyGroup>
</j2c:interactionSpec>
</j2c:method>
<j2c:managedConnectionFactory class="com.ibm.connector2.cics.ECIManagedConnectionFactory" target="MyDefaultJNDIName">
<adapter:propertyGroup name="MANAGED_CONNECTION_FACTORY_CLASS_PROPERTIES">
<adapter:propertyGroup name="Server">
<adapter:propertyElement name="ConnectionURL" value="j2c"/>
<adapter:propertyElement name="ServerName" value="cics"/>
</adapter:propertyGroup>
<adapter:propertyGroup name="UserVerification">
<adapter:propertyElement name="UserName" value="sysad"/>
<adapter:propertyElement name="Password" value="susad"/>
</adapter:propertyGroup>
<adapter:propertyGroup name="Security"/>
</adapter:propertyGroup>
</j2c:managedConnectionFactory>
<j2c:connectionSpec class="com.ibm.connector2.cics.ECIConnectionSpec"/>
<j2c:resourceAdapter project="${ra.project}"/>
</j2c:buildService>
<adapter:writeToWorkspace writer="{com/ibm/adapter/j2c/codegen/writer}J2CAnnotationWorkspaceResourceWriter">
<adapter:propertyGroup name="J2C Java Bean Writer Properties">
<adapter:propertyElement name="Project" value="Test"/>
<adapter:propertyElement name="PackageName" value="sample.cics"/>
<adapter:propertyElement name="InterfaceName" value="Customer"/>
</adapter:propertyGroup>
</adapter:writeToWorkspace>
</j2c:generateService>
Дополнительные задачи
Остальные служебные задачи нужны, но н требуются для создания артефакта.
<adapter:createProject
projectName="taderc99Project"
projectType="Web"
runtimeName="J2EE Runtime Library"
addToEAR="yes"
EARProjectName="TestEAR"/>
Где:<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. Атрибут name - это внутреннее свойство агента поиска или загрузчика ресурсов, применяемое для передачи значения. Важно правильно определить атрибут name. Если компонент не сможет распознать имя, значение не будет задано.