此规则会标记在 META-INF/context.xml 文件中找到的 Context <Environment> 元素,这些元素必须转换为 WEB-INF/web.xml 文件中的 <env-entry> 元素。
Apache Tomcat 允许在下列位置中定义 Context <Environment> 元素:
因为迁移工具可能无法访问 Tomcat 配置目录,所以它只会标记 META-INF/context.xml 文件中的 Context <Environment>。其他位置中定义的 Context <Environment> 信息必须复制到 META-INF/context.xml 文件,才能由该工具进行处理。
如果 WEB-INF/web.xml 存在于 Web 项目中:
在下列任何情况下,都将标记 Context <Environment> 元素:
在源扫描程序中,为此规则提供了快速修订。 如果 web.xml 文件中尚不存在表示 Context <Environment> 元素的 <env-entry> 元素,那么该快速修订会在 web.xml 文件中添加一个新的 <env-entry> 元素。如果该条目已存在,那么会更新该条目。
如果 WEB-INF/web.xml 不存在:
将标记所有 Context <Environment> 元素。
如果 Web 项目是 Java EE 5 或更高版本,那么该快速修订将创建包含相应 <env-entry> 元素的 WEB-INF/web.xml 文件。 如果 Web 项目是 J2EE 1.4 或更低版本,那么该快速修订将报告错误。
例如,考虑具有以下内容的 META-INF/context.xml 文件:|
<Environment description="Trigger because it does not exist" name="newEntry" override="false" type="java.lang.String" value="abc123"/> <Environment description="Trigger because of different value" name="contextEnvString_1" override="false" type="java.lang.String" value="new Value"/> <Environment description="Trigger because of different type" name="contextEnvString_2" override="false" type="java.lang.Integer" value="123"/> <Environment description="will not Trigger because of override set to true." name="contextEnvString_3" override="true" type="java.lang.Integer" value="123"/> |
在应用程序中具有以下 web.xml 文件:
|
<env-entry> <description>Trigger because of different value</description> <env-entry-name>contextEnvString_1</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>oldValue</env-entry-value> </env-entry> <env-entry> <description>Trigger because of different type</description> <env-entry-name>contextEnvString_2</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>123</env-entry-value> </env-entry> <env-entry> <description>will not Trigger because of override set to true.</description> <env-entry-name>contextEnvString_3</env-entry-name> <env-entry-type>java.lang.Integer</env-entry-type> <env-entry-value>123456789</env-entry-value> </env-entry> |
应用该快速修订后,将更新 web.xml 以包含:
|
<env-entry> <description>Trigger because of different value</description> <env-entry-name>contextEnvString_1</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>new Value</env-entry-value> </env-entry> <env-entry> <description>Trigger because of different type</description> <env-entry-name>contextEnvString_2</env-entry-name> <env-entry-type>java.lang.Integer</env-entry-type> <env-entry-value>123</env-entry-value> </env-entry> <env-entry> <description>will not Trigger because of override set to true.</description> <env-entry-name>contextEnvString_3</env-entry-name> <env-entry-type>java.lang.Integer</env-entry-type> <env-entry-value>123456789</env-entry-value> </env-entry> <env-entry> <description>Trigger becasue it does not exist</description> <env-entry-name>newEntry</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>abc123</env-entry-value> </env-entry> |