首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Rational Application Developer V7 中的 J2C Ant 脚本(2)

使用 Rational Application Developer V7 中的 J2C Ant 脚本(2)

J2C Ant 脚本概述数据绑定 Ant 脚本的设计以下的内容介绍了作为 CICS/IMS Data Binding 会话记录结果而生成的 Ant 文件(如清单 1 所示)。
所生成的数据绑定脚本由目标、任务、类型及属性组成。要了解更多关于 Ant 如何工作的内容,访问 。
脚本拥有一个定制任务,discover。其余的标签是定制类型。数据发现出现在两个截然不同的阶段,这很容易在带有performImport 和 writeToWorkspace 复合元素(Ant 定制类型)的示例脚本中确定出来。
两种定制类型都包含进行语言(COBOL、PL1,或 C)文件导入和(数据绑定 bean)工件生成所需的必要数据。
导入及生成都在内部执行,分别使用 Discovery Agent 和 Workspace Resource Writer。根据所导入的语言和所生成的工件类型,您可以使用各种实现。每个实现通过其 ID(javax.xml.namespace.QName)来识别。COBOL、C 和 PL/1 是代理实现为之存在的一些文件实例。在该实例中,所导入的类型是 COBOL,因此使用 ID 为 {com/ibm/adapter}CobolDiscoveryAgent 的 Discovery Agent。相同的逻辑也向撰写者应用。
导入和撰写数据是利用定制的属性类型,如propertyElement 和 propertyGroup 来存储的。这是代理及撰写者所能处理的格式。
注意在脚本的末尾,我们已经完成了 refreshLocal 和 incrementalBuild。这令 Annotation 构造器能够根据 J2C bean 和 数据绑定文件中的所有的 doclet Tag 在方法体中重新生成代码,并且与工程同步。
清单 1. 数据绑定 Ant 脚本的示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<project xmlns:adapter="http://com.ibm.adapter"
default="DataBinding1" name="/myTaderc99/DFHCOMMAREA.xml">
<property name="debug" value="true"/>
<property name="project1" value="myTaderc99"/>
<target name="DataBinding1">
<adapter:discover>
<adapter:performImport
              agent="{com/ibm/adapter}CobolDiscoveryAgent">
<adapter:importResource>
<adapter:propertyGroup name="CobolFileGroup">
<adapter:propertyElement name="CobolFile"
              value="D:\taderc99.cbl"/>
</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="Default"/>
<adapter:propertyGroup name="Java Type Name">
<adapter:propertyElement name="Project Name"
              value="${project1}"/>
<adapter:propertyElement name="Package Name"
              value="test.data"/>
<adapter:propertyElement name="Class Name"
              value="DFHCOMMAREA"/>
</adapter:propertyGroup>
</adapter:propertyGroup>
</adapter:writeToWorkspace>
</adapter:discover>
<eclipse.refreshLocal depth="infinite" resource="${project1}"/>
<eclipse.incrementalBuild project="${project1}"/>
</target>
</project>




J2C 服务 Ant 脚本的设计以下示例描述了作为 J2C Java Bean 会话记录的结果而生成的 Ant 文件的 J2C bean 生成部分(如清单 2 所示)。
将脚本组织成互相依赖的不同目标。根据依赖型顺序地执行不同的目标。
脚本有一个任务,generateService。两个截然不同的部分是 buildService 和 writeToWorkspace。第一部分与前面的示例不同,因为正在构建服务,而不是发现服务。假设 DFHCOMMAREA.java 文件位于 Test2 工程和 test.data 包之下。
第二个部分与来自于 CICS/IMS Data Binding 的 writeToWorkspace 是同样的,差别在于所使用的值不同。
在所描述的任务之中,Ant 文件包含了两个额外的助手任务。createProject 任务,如其名称所指的,它是用于工程的创建。importResourceAdapter 任务是用于导入资源适配器并创建连接器工程 cicseci602的。
清单 2. J2C Java Bean Ant 脚本的样例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:adapter="http://com.ibm.adapter"
  xmlns:j2c="http://com.ibm.adapter.j2c"
  default="J2CBeanGeneration1" name="/Test2/Customer.xml">
<target name="Init1">
<property name="debug" value="true"/>
<property name="project1" value="Test2"/>
<property name="ra.project" value="cicseci602"/>
<property name="ra.runtime"
          value="WebSphere Application Server v6.1"/>
<property name="ra.file"
value="D:\Program Files\IBM\SDP70\ResourceAdapters\cics15\cicseci602.rar"/>
</target>
<target depends="Init1" name="DataBinding1">
<adapter:createProject projectName="${project1}"
          projectType="Java"/>
<eclipse.refreshLocal depth="infinite"
          resource="${project1}"/>
<eclipse.incrementalBuild project="${project1}"/>
</target>
<target depends="DataBinding1" name="importResourceAdapter1">
<j2c:importResourceAdapter addToEAR="no"
          connectorFile="${ra.file}" connectorModule="${ra.project}"
          targetRuntime="${ra.runtime}"/>
</target>
<target depends="importResourceAdapter1"
      name="J2CBeanGeneration1">
<adapter:createProject projectName="${project1}"
          projectType="Java"/>
<j2c:generateService>
<j2c:buildService class="Customer"
              package="sample.test">
<j2c:method>
<j2c:methodName value="getCustomerInfo"/>
<j2c:methodInput
              value="/Test2/test/data/DFHCOMMAREA.java"/>
<j2c:methodOutput
              value="/Test2/test/data/DFHCOMMAREA.java"/>
<j2c:interactionSpec
              class="com.ibm.connector2.cics.ECIInteractionSpec">
<adapter:propertyGroup
              name="InteractionSpec property group">
<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 property group">
<adapter:propertyGroup name="Server">
<adapter:propertyElement name="ConnectionURL"
              value="rubicon"/>
<adapter:propertyElement name="ServerName"
              value="rubicon"/>
</adapter:propertyGroup>
<adapter:propertyGroup name="UserVerification">
<adapter:propertyElement name="UserName"
              value="sysad"/>
<adapter:propertyElement name="Password"
              value="2006"/>
</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}J2CAnnotationWriter">
<adapter:propertyGroup name="J2C Writer Properties">
<adapter:propertyElement
              name="Project" value="${project1}"/>
<adapter:propertyElement
              name="PackageName" value="sample.test"/>
<adapter:propertyElement
              name="InterfaceName" value="Customer"/>
</adapter:propertyGroup>
</adapter:writeToWorkspace>
</j2c:generateService>
<eclipse.refreshLocal
          depth="infinite" resource="${project1}"/>
<eclipse.incrementalBuild project="${project1}"/>
</target>
</project>




预定义的变量所生成的脚本还包含预定义的 Ant 属性,像 debug 和 project1。这些 Ant 属性可以用作脚本中的变量。当一个值在 Ant 文件中的多个位置重复时,把它定义为变量有一大好处:您只需要在一个位置修改它的值,然而变更将反应到整篇脚本中。如果将debug 属性设置为false,那么它将禁止控制台输出。
多目标由于 Ant 允许在一个文件中定义多个目标,您可以修改文件内容并将两个或多个文件合并到一个中。
可重复性您还可以将所生成的文件用作进一步工件生成的模板。例如,如果您变更了 COBOL 文件、导入属性和目标类名,那么您可以在不使用向导的情况下生成新的数据绑定。
返回列表