我需要包括从一些值file.properties
到WEB-INF/web.xml
是这样的:
<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>
我目前有这方面的工作:
- JBoss的
- JEE5
我需要包括从一些值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>
谨慎的关于上述所接受的溶液A字。
我用这个在JBoss今天5试验:在contextInitialized()
方法不会被调用后,直到web.xml
被加载,从而使更改系统属性不参与的时间效应。 奇怪的是,这意味着,如果你重新部署web应用程序(无需重新启动的JBoss)的属性将被设置部署最后一次生存,因此可能会出现工作。
那我们要改为使用的解决方案是通过参数通过java命令行如到JBoss -Dparameter1=value1 -Dparameter2=value2
。
使用Ant replacetoken任务。 https://blogs.oracle.com/rajeshthekkadath/entry/automation_using_ant_replace_function