在 WebSphere Liberty 中设置 servlet 初始化参数

Set servlet initialization parameters in WebSphere Liberty

我得到了一个包含 servlet 的 WAR。在该 servlet 的源代码中有默认的初始化参数......例如:

@WebInitParam( name = "proxyHttpsPort", value = "9445", description = "EPS Proxy HTTPS port" ),

我的困惑是如何在我的本地 WebSphere Liberty 环境中覆盖这些默认值。有谁知道如何设置初始化参数的值,以便当 servlet 为 loaded/started 时,将使用我本地提供的值而不是应用程序中内置的默认值?

当我们定义一个Servlet时,我们可以通过Java注解来实现。例如:

@WebServlet

我们还可以定义初始化参数:

@WebInitParam(name="name", value="value")

初始化参数背后的概念是提供 运行 时间配置参数,该参数可能因部署解决方案的位置而异。例如,在一个系统上,初始化参数可能有:

name="passwordFile", value="/etc/mypasswords.txt"

在不同的系统上,我们可能有:

name="passwordFile", value="/tmp/test_passwords.txt"

我们不想在我们的应用程序中对这些值进行硬编码,而是提供一个可以在 运行 时覆盖的默认值。

当我们在 Java EE 上构建部署动态 Web 应用程序时,我们可以通过代码中的注释专门定义 servlet,这是目前首选的样式。然而,在注释之前,人们通过名为 web.xml 的 XML 文件定义了动态 Web 项目(包括其 servlet)的特征。在此文件中,可以提供一大组配置参数,包括 servlet 以及 servlet 的初始化参数。

看来 web.xml 技术对我们仍然可用,并且可以与 Java 注释结合使用。这意味着我们可以通过注释声明我们的 Servlet 和初始化参数,同时创建一个 web.xml 文件。通过注解找到一个值,没有对应的web.xml值,则使用注解。但是,如果同时存在注释和相同的 web.xml 定义,则 web.xml 定义将是实际使用的定义。由于 web.xml 是一个 "exposed" 配置文件,在部署时,我们可以编辑 web.xml 来为我们希望覆盖的任何内容设置所需的值……包括初始化参数。