我需要将 a 中的一些值包含file.properties
在WEB-INF/web.xml
如下内容中:
<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>
我目前正在处理这个:
- 老板
- JEE5
我需要将 a 中的一些值包含file.properties
在WEB-INF/web.xml
如下内容中:
<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>
我目前正在处理这个:
您可以添加此类,将文件中的所有属性添加到 JVM。并将此类添加到上下文侦听器中web.xml
public class InitVariables implements ServletContextListener
{
@Override
public void contextDestroyed(final ServletContextEvent event)
{
}
@Override
public void contextInitialized(final ServletContextEvent event)
{
final String props = "/file.properties";
final Properties propsFromFile = new Properties();
try
{
propsFromFile.load(getClass().getResourceAsStream(props));
}
catch (final IOException e)
{
// can't get resource
}
for (String prop : propsFromFile.stringPropertyNames())
{
if (System.getProperty(prop) == null)
{
System.setProperty(prop, propsFromFile.getProperty(prop));
}
}
}
}
在 web.xml 中
<listener>
<listener-class>
com.company.InitVariables
</listener-class>
</listener>
现在您可以使用获取项目中的所有属性
System.getProperty(...)
或在 web.xml
<param-name>param-name</param-name>
<param-value>${param-name}</param-value>
关于上述接受的解决方案,请注意。
我今天在 jboss 5 上对此进行了试验:在加载contextInitialized()
之后才调用该方法,web.xml
因此对系统属性的更改不会及时生效。奇怪的是,这意味着如果您重新部署 webapp(不重新启动 jboss),该属性将在上次部署时设置,因此它可能看起来可以工作。
我们将使用的解决方案是通过 java 命令行将参数传递给 jboss,例如-Dparameter1=value1 -Dparameter2=value2
.
使用 Ant 的 replacetoken 任务。https://blogs.oracle.com/rajeshthekkadath/entry/automation_using_ant_replace_function