第 2 章 开始使用


2.1. 

本小节介绍了创建和测试第一个基于 MTA XML 的规则的过程。这假设您已安装了 MTA。

在本例中,您将编写一个规则来发现应用程序定义了包含 <class-loading> 元素的 jboss-web.xml 文件,并提供描述如何迁移代码的文档的链接。

创建目录结构以包含您的第一条规则和用于测试的数据文件。

$ mkdir -p /home/USER_NAME/migration-rules/rules
$ mkdir -p /home/USER_NAME/migration-rules/data
Copy to Clipboard Toggle word wrap

此目录结构也将用于存放生成的 MTA 报告。

  1. 复制以下内容。

    <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
    <jboss-web>
        <class-loading java2ClassLoadingCompliance="false">
            <loader-repository>
                seam.jboss.org:loader=@projectName@
                <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
            </loader-repository>
        </class-loading>
    </jboss-web>
    Copy to Clipboard Toggle word wrap

基于 MTA XML 的规则使用以下规则模式:

when(condition)
  perform(action)
otherwise(action)
Copy to Clipboard Toggle word wrap

  1. 复制以下内容。

    <?xml version="1.0"?>
    <ruleset id="UNIQUE_RULESET_ID"
        xmlns="http://windup.jboss.org/schema/jboss-ruleset"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
        <metadata>
            <description>
                <!-- Ruleset Description -->
            </description>
            <dependencies>
                <!-- Ruleset Dependencies -->
            </dependencies>
            <sourceTechnology id="SOURCE_ID" versionRange="SOURCE_VERSION_RANGE"/>
            <targetTechnology id="TARGET_ID" versionRange="TARGET_VERSION_RANGE"/>
            <tag>Reviewed-2015-05-01</tag>
        </metadata>
        <rules>
            <rule id="UNIQUE_RULE_ID">
                <when>
                    <!-- Test for a condition here -->
                </when>
                <perform>
                    <!-- Perform an action -->
                </perform>
            </rule>
         </rules>
    </ruleset>
    Copy to Clipboard Toggle word wrap
    注意

  2. <dependencies>
      <addon id="org.jboss.windup.rules,windup-rules-javaee,3.0.0.Final"/>
      <addon id="org.jboss.windup.rules,windup-rules-java,3.0.0.Final"/>
    </dependencies>
    Copy to Clipboard Toggle word wrap
  3. 设置源和目标技术版本。

  4. 完成 when 条件。

    由于此规则测试在 XML 文件中的一个匹配项,因此 xmlfile 被用于评估文件。

    要在作为 jboss-web 的子 class-loading 项上匹配,请使用 xpath 表达式 jboss-web/class-loading

    <when>
        <xmlfile matches="jboss-web/class-loading" />
    </when>
    Copy to Clipboard Toggle word wrap
  5. 为这个规则完成 perform 操作。

    • 添加带有描述性标题的分类,以及 1 的工作量级别。
    • 提供提示以及描述迁移详情的文档的链接。

      <perform>
          <iteration>
              <classification title="JBoss Web Application Descriptor" effort="1"/>
              <hint title="JBoss Web XML class-loading element is no longer valid">
                <message>
                  The class-loading element is no longer valid in the jboss-web.xml file.
                </message>
                <link href="https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.4/html-single/Migration_Guide/index.html#Create_or_Modify_Files_That_Control_Class_Loading_in_JBoss_Enterprise_Application_Platform_6" title="Create or Modify Files That Control Class Loading in JBoss EAP 6"/>
              </hint>
          </iteration>
      </perform>
      Copy to Clipboard Toggle word wrap

该规则现已完成,应类似以下示例。

<?xml version="1.0"?>
<ruleset id="JBoss5-web-class-loading"
    xmlns="http://windup.jboss.org/schema/jboss-ruleset"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
    <metadata>
        <description>
            This ruleset looks for the class-loading element in a jboss-web.xml file, which is no longer valid in JBoss EAP 6
        </description>
         <dependencies>
            <addon id="org.jboss.windup.rules,windup-rules-javaee,3.0.0.Final"/>
            <addon id="org.jboss.windup.rules,windup-rules-java,3.0.0.Final"/>
        </dependencies>
        <sourceTechnology id="eap" versionRange="(4,5)"/>
        <targetTechnology id="eap" versionRange="[6,)"/>
    </metadata>
    <rules>
        <rule id="JBoss5-web-class-loading_001">
            <when>
                <xmlfile matches="jboss-web/class-loading" />
            </when>
            <perform>
                <iteration>
                    <classification title="JBoss Web Application Descriptor" effort="1"/>
                    <hint title="JBoss Web XML class-loading element is no longer valid">
                      <message>
                        The class-loading element is no longer valid in the jboss-web.xml file.
                      </message>
                      <link href="https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.4/html-single/Migration_Guide/index.html#Create_or_Modify_Files_That_Control_Class_Loading_in_JBoss_Enterprise_Application_Platform_6" title="Create or Modify Files That Control Class Loading in JBoss EAP 6"/>
                    </hint>
                </iteration>
            </perform>
        </rule>
     </rules>
</ruleset>
Copy to Clipboard Toggle word wrap

通过将规则放入相应的目录来安装 MTA 规则。

$ cp /home/USER_NAME/migration-rules/rules/JBoss5-web-class-loading.windup.xml RHAMT_HOME/rules/
Copy to Clipboard Toggle word wrap

$ RHAMT_HOME/bin/rhamt-cli --sourceMode --input /home/USER_NAME/migration-rules/data --output /home/USER_NAME/migration-rules/reports --target eap:6
Copy to Clipboard Toggle word wrap

您应看到以下结果:

Report created: /home/USER_NAME/migration-rules/reports/index.html
              Access it at this URL: file:///home/USER_NAME/migration-rules/reports/index.html
Copy to Clipboard Toggle word wrap

查看报告以确保它提供了预期的结果。

    1. 在主登录页面中,点 Rule providers execution overview 链接,以打开 Rule Providers Execution Overview。
    2. 找到 JBoss5-web-class-loading_001 规则,验证它的 Status?Condition met,它的 Result?success

      图 2.1. 

    1. 您可以看到 <class-loading> 行已被突出显示,自定义规则中的 hint 会显示内联。

      图 2.2. 

      文件顶部列出了匹配规则的分类。您可以使用链接图标查看该规则的详情。请注意在本示例中,jboss-web.xml 文件匹配另外一个规则 (JBoss web application descriptor (jboss-web.xml)) ,它生成的故事点为 1。这和来自自定义规则的 1 故事点结合,将此文件的总故事点为 2

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat