É possível usar os assistentes J2C para criar um arquivo de configuração Ant capturando suas seleções e os valores inseridos. Como um arquivo de configuração Ant é essencialmente um arquivo XML, ele pode ser modificado ou totalmente construído à mão.
Um arquivo de configuração Ant consiste em uma árvore de destino na qual várias tarefas são executadas. Tarefas dentro de um destino são processadas em um pipeline. Cada tarefa é executada por um objeto que implementa uma determinada interface de tarefa. Quando o arquivo de configuração Ant é chamado, propriedades correspondentes a cada tarefa são carregadas nos objetos da tarefa de implementação. Após as informações serem carregadas, o objeto de tarefa é chamado.
Tarefa de descoberta de dados
<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>
Tarefa de Geração de Serviço
No caso especial de importação de linguagem (COBOL, C e PL/I), há uma etapa adicional que envolve a geração da ligação de interface. O exemplo a seguir descreve a seção de descoberta de dados do script Ant usado para gerar um bean J2C:
<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>
Tarefas Adicionais
Outras tarefas do utilitário são úteis, mas não necessárias para gerar um artefato.
<adapter:createProject
projectName="taderc99Project"
projectType="Web"
runtimeName="J2EE Runtime Library"
addToEAR="yes"
EARProjectName="TestEAR"/>
em que:<j2c:importResourceAdapter
connectorModule="cicseci602"
connectorFile="D:\IBM\SDP70\ResourceAdapters\cics15\cicseci602.rar"
targetRuntime="J2EE Runtime Library"
addToEAR="yes"
EARProjectName="TestEAR"/>
Definindo Propriedades
Agentes de descoberta e gravadores de área de trabalho são referidos por seus nomes exclusivos (QName). Para localizar todos os agentes de descoberta registrados, gravadores de recurso da área de trabalho e configurações de importação, use o script displayAll.xml localizado no diretório de amostra.
Conforme observado nos scripts de exemplo, os valores que são passados para os agentes de descoberta ou gravadores de recurso são definidos pelas tags propertyGroup e propertyElement. Um grupo de propriedades define um agrupamento lógico de propriedades por meio de uma estrutura aninhada. O layout da estrutura e os nomes de propriedade e grupo são descritos na documentação do agente de descoberta ou gravador de recurso.
Propriedades são definidas por um par de atributos de nome-valor. O nome é uma propriedade definida internamente pelo agente de descoberta ou gravador de recurso e é usada para passar o valor. É importante obter o nome correto. Se o nome não for reconhecido pelo componente, o valor não será configurado.