【问题标题】:Set servlet initialization parameters in WebSphere Liberty在 WebSphere Liberty 中设置 servlet 初始化参数
【发布时间】:2017-06-26 15:12:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: servlets websphere-liberty


    【解决方案1】:

    当我们定义一个 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 是一个“公开的”配置文件,因此在部署时,我们可以编辑 web.xml 为我们希望覆盖的任何内容设置所需的值……包括初始化参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多