我已经提供了一个包含servlet的WAR。在该servlet的源代码中有默认的初始化参数...例如:
@WebInitParam(
name = "proxyHttpsPort",
value = "9445",
description = "EPS Proxy HTTPS port"
),
我的难题是如何在我的本地WebSphere Liberty环境中覆盖这些默认值。有没有人知道如何设置初始化参数的值,以便在加载/启动servlet时,将使用我本地提供的值而不是应用程序中的默认值?
答案 0 :(得分:0)
当我们定义一个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来为我们想要覆盖的任何内容设置所需的值...包括初始化参数。