运行代码生成器
使用代码生成器来生成实现建议分区所需的 API 服务和相关代码。
准备工作
确保满足 系统需求 和以下代码生成器需求。
此外,根据需要定制代码生成过程。 cardinal 目录中的 app.config.txt 文件具有两个可定制参数。
- ApplicationName
- 重构的应用程序的名称。 该值用作生成的代码、URL 和注释的前缀。
- CardinalOut路径
- 源代码树中生成实用程序类代码的位置。
过程
运行代码生成器以生成建议分区的重构代码。
结果
成功完成代码生成器会生成类似于以下 Daytrader 目录结构的目录结构。
transform-input
├── cardinal
│ ├── app_config.txt
│ ├── cardinal-codegen
│ │ ├── Cardinal-Utility-report.txt
│ │ ├── Cardinal-partition0-report.txt
│ │ ├── Cardinal-partition1-report.txt
│ │ ├── Cardinal-partition2-report.txt
│ │ ├── Cardinal-partition3-report.txt
│ │ ├── Cardinal-partition4-report.txt
│ │ ├── CardinalFileSummary.json
│ │ ├── CardinalFileSummary.txt
│ │ └── CardinalSings.json
│ ├── cardinal_graph.json
│ ├── class_run.json
│ ├── instrumenter-config.json
│ ├── partition.txt
│ ├── refTable.json
│ └── symTable.json
├── daytrader7-source
├── daytrader7-source-Utility
├── daytrader7-source-partition0
├── daytrader7-source-partition1
├── daytrader7-source-partition2
├── daytrader7-source-partition3
└── daytrader7-source-partition4
在此示例中, daytrader-source-Utility 分区包含标识为潜在实用程序类的 Java ® 整体式应用程序类。 您可以将此分区与 IBM Mono2Micro™ 生成的代码一起视为任何其他分区,也可以将这些应用程序类作为实用程序 .jar 文件与依赖于这些类的所有其他分区一起打包。
突出显示的目录由代码生成器创建。 cardinal-codegen 目录包含各种报告,并且在 xxx-partition_n 目录中写入各种分区,其中 xxx
是 ApplicationName 值, n
是分区号。 For the example, the partitions are named daytrader7-source-partition_n
(where 0 <= n <= 4). 有关更多信息,请参阅 创建定制视图。
所有这些 xxx-partition_n 目录都包含从当前整体应用程序中获取的源代码的相应部分。 输出包括但不限于转换型包装器、API 服务、分布式对象管理代码和垃圾回收。 所有代码移动和生成都由 Mono2Micro的代码生成组件自动完成。 目前,代码生成器仅考虑 .java 源文件; 它不会从整体式应用程序复制或生成任何配置或部署信息。 要将分区实际部署为微服务,必须提供适当的配置信息。
生成的内部 cardinal-codegen 文件夹包含各种报告。 The Cardinal-partition_n-report.txt (where 0 <= n <= 4) files are the Java ® invocation analysis reports for individual partitions in text form, as shown in figure for the partition_3
partition
. 您可以在运行代码生成器以生成报告的合并 HTML 版本时指定 html 选项。 有关更多信息,请参阅 Cardinal-Report。

Mono2Micro 的代码生成组件会生成 CardinalFileSummary.txt 文件,其中详细说明了生成代码所执行的所有步骤。 可以使用报告进行调试,更深入地了解代码生成过程,并查看生成的代码。 此报告仅供参考使用,不由 Mono2Micro的任何组件使用。
对于每个分区,CardinalFileSummary.txt 报告中提供了五种类别的报告。 下图中显示了简略的样本报告。

Proxy
- 包含每个分区的存根类的报告,这些存根类需要访问非本地且属于其他分区的对象。
Service
- 包含为从分区外部访问的分区对象创建的 API 的报告。
Original
- 包含来自 monolith 的原始完整 Java 文件的报告。 这些文件仅在分区内本地访问。
Dummy
- 包含静态源代码分析期间选取的文件的报告,在运行时中未使用这些文件。
Cardinal Exceptions
将添加到这些文件中,以确保在运行时生成相应的运行时异常。 此类别的报告还会通知开发者有关这些文件的潜在依赖关系。 Helper
- 包含生成的代码的报告,用于处理建议分区及其相应接口的序列化和异常等功能。
Copied
- 包含没有编程逻辑但编译分区 (例如接口和抽象类) 所需的类的报告。
cardinal-codegen 目录下的最终报告为 CardinalSings.json。 此文件旨在供开发者使用。 此报告列出以下内容:
- 列出需要更改代码的位置或需要详细检查以实现分区作为潜在微服务的位置。
- 列出开发人员的操作项(以
CARDINAL_TODO_T<number>
形式键入),这些操作项必须已进行寻址或是WARN
类型。 这些警告建议开发者在必要时检查和更新代码。 任务分为类和文件级别。 以下报告显示了在重构样本 Daytrader 应用程序时的WARN TODOs
。 每个CARDINAL_TODO_T<number>
任务的代码生成器都提供了详细的自说明性注释。