此规则将标记
Context <Environment>
在 META-INF/context.xml 文件中找到必须变换为
<env-entry>
元素中的元素
WEB-INF/web.xml 文件。
Apache Tomcat 允许
Context <Environment>
要在这些位置中定义的元素:
- META-INF/context.xml 文件
- Tomcat conf 目录中的应用程序 XML 配置文件
- 该
<Host>
conf/server.xml 中的元素
由于迁移工具可能无权访问 Tomcat 配置目录,因此它仅会标记
Context <Environment>
在
META-INF/context.xml 文件。
Context <Environment>
可以将其他位置中定义的信息复制到 META-INF/context.xml 文件,以便该工具对其进行处理。
如果 WEB-INF/web.xml 存在于 Web 项目中:
Context <Environment>
将在下列任何条件下标记元素:
- 条目在 web.xml 文件中没有匹配的条目。
- 条目的类型和 web.xml 文件中匹配条目的类型不同。
- 条目的值和 web.xml 文件中匹配条目的值不同,并且条目覆盖标志设为 false。
添加新的
<env-entry>
web.xml 文件中表示
Context <Environment>
如果元素尚不存在于
web.xml 文件。
如果该条目已存在,那么会更新该条目。
如果 WEB-INF/web.xml 不存在:
全部
Context <Environment>
将标记元素。
创建一个 WEB-INF/web.xml 文件 文件,其中包括相应的
<env-entry>
元素,如果 网络项目的 Java EE 5 或更高版本。 如果网络项目 是 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"
值 = "新值" />
<Environment
description="Trigger because of different type"
name="contextEnvString_2"
override="false"
type="java.lang.Integer"
值 = "123 " />
<Environment
description="will not Trigger because of override set to true."
name="contextEnvString_3"
override="true"
type="java.lang.Integer"
值 = "123 " />
在应用程序中具有以下 web.xml 文件:
<env-entry>
<description>由于值不同而触发</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>由于类型不同而触发</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>不会触发,因为覆盖设置为 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>由于值不同而触发</description>
<env-entry-name>contextEnvString_1</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>新值</env-entry-value>
</env-entry>
<env-entry>
<description>由于类型不同而触发</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>不会触发,因为覆盖设置为 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>触发器因为它不存在</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>