在 Web.XML 中读取系统属性
Reading System Properties in Web.XML
为了从 JBoss EAP 7 服务器上的 web.xml 访问存储在文件 src/resources/settings.properties 中的全局值,我从类似的 Stack Overflow 主题中实现了以下 class:
public class ConfigurationWebFilter implements ServletContextListener {
protected static final Properties properties = new Properties();
@Override
public void contextInitialized(final ServletContextEvent event){
try {
try (InputStream stream = new FileInputStream("/settings.properties")) {
properties.load(stream);
}
for (String prop : properties.stringPropertyNames())
{
if (System.getProperty(prop) == null)
{
System.setProperty(prop, properties.getProperty(prop));
}
}
} catch (IOException ex) {
logger.error("Failed loading settings from configuration file for web.xml", ex);
}
}
}
然后我将相应的监听器添加到 web.xml:
<listener>
<listener-class>
com.product.util.ConfigurationWebFilter
</listener-class>
</listener>
代码被正确调用,我可以通过调试验证系统变量设置是否正确。不过我的web.xml的属性好像不是replaced/interpreted。即使在重新启动服务器 and/or 重新发布后,以下参数仍然计算为 ${serverName}:
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>(...)</filter-class>
<init-param>
<param-name>serverName</param-name>
<param-value>${serverName}</param-value>
</init-param>
</filter>
关于这个问题的所有其他主题都没有用,因为没有适合我的解决方案。如何用属性文件中存储的值替换 web.xml 参数?
现在有效,我必须在 Wildfly 中将与变量替换相关的参数设置为真(原为假)standalone.xml。
为了从 JBoss EAP 7 服务器上的 web.xml 访问存储在文件 src/resources/settings.properties 中的全局值,我从类似的 Stack Overflow 主题中实现了以下 class:
public class ConfigurationWebFilter implements ServletContextListener {
protected static final Properties properties = new Properties();
@Override
public void contextInitialized(final ServletContextEvent event){
try {
try (InputStream stream = new FileInputStream("/settings.properties")) {
properties.load(stream);
}
for (String prop : properties.stringPropertyNames())
{
if (System.getProperty(prop) == null)
{
System.setProperty(prop, properties.getProperty(prop));
}
}
} catch (IOException ex) {
logger.error("Failed loading settings from configuration file for web.xml", ex);
}
}
}
然后我将相应的监听器添加到 web.xml:
<listener>
<listener-class>
com.product.util.ConfigurationWebFilter
</listener-class>
</listener>
代码被正确调用,我可以通过调试验证系统变量设置是否正确。不过我的web.xml的属性好像不是replaced/interpreted。即使在重新启动服务器 and/or 重新发布后,以下参数仍然计算为 ${serverName}:
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>(...)</filter-class>
<init-param>
<param-name>serverName</param-name>
<param-value>${serverName}</param-value>
</init-param>
</filter>
关于这个问题的所有其他主题都没有用,因为没有适合我的解决方案。如何用属性文件中存储的值替换 web.xml 参数?
现在有效,我必须在 Wildfly 中将与变量替换相关的参数设置为真(原为假)standalone.xml。