WebLogic 将 Kodo 用于其 JPA 1.0 提供程序实现。此规则会检测是否使用了 kodo.* 属性。Kodo 基于 OpenJPA。同样,OpenJPA 是针对 JPA 1.0 和 2.0 的 WebSphere 缺省 JPA 提供程序。但是,从 JPA 2.1 开始,WebSphere 切换至 EclipseLink 作为其缺省 JPA 提供程序。
可在属性名称为 String 字面值的 Java 文件中指定 Kodo 属性。下列代码示例会被标记:
String var = "kodo.FilterListeners";
或
map.put("kodo.Profiling", "someValue");
可在 persistence.xml 文件中指定 Kodo 属性,此文件必须位于 META-INF 文件夹中。例如,检测 persistence.xml 文件中的以下属性:
<property name="kodo.FilterListeners" value="some value" />
如果应用程序使用 Kodo,那么最简单的应用程序迁移解决方案是使用 JPA 2.0。使用 JPA 2.0 所需的应用程序更改少于使用最新的 JPA 版本,因为 Kodo 基于 OpenJPA,这是用于针对 JPA 2.0 的 WebSphere 实现的相同实现。但是,JPA 2.1 或更高版本基于 EclipseLink。JPA 实现中的差别是指针对应用程序的潜在行为更改。此外,Kodo 中提供的属性在 EclipseLink 中可能没有等效属性。
以下建议适用于这两个迁移选项:
如果关注于迁移到最新 JPA 规范,那么迁移将需要额外的规划和调查。针对 OpenJPA 至 EclipseLink 迁移,提供多种资源。因为 Kodo 基于 OpenJPA 构建,适合 OpenJPA 的建议通常也适用于 Kodo。以下资源用于 Kodo/OpenJPA 和 EclipseLink 之间的迁移:
如果正在寻找更快速的迁移,更简单的解决方案是将应用程序迁移到 JPA 2.0。在此情况下,可利用 Kodo 至 OpenJPA 规则以及源扫描程序中提供的快速修订。要在源扫描程序中启用 JPA 2.0 规则,请浏览至规则选择对话框并选中“WebLogic JPA 迁移”下面的 JPA 2.0 类别。这将启用将已知 Kodo 类和属性迁移到 OpenJPA 的规则集。另外,清除 JPA 2.1 复选框以禁用 JPA 2.1 规则。
在完成必需的应用程序更改后,配置应用程序服务器以使用 JPA 2.0,而不是 JPA 2.1。