Ich muss einige Werte aus einer file.properties
in die WEB-INF/web.xml
etwa so:
<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>
Damit beschäftige ich mich derzeit:
- JBoss
- JEE5
Ich muss einige Werte aus einer file.properties
in die WEB-INF/web.xml
etwa so:
<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>
Damit beschäftige ich mich derzeit:
Sie können diese Klasse hinzufügen, die alle Eigenschaften aus Ihrer Datei zur JVM hinzufügt. Und fügen Sie diese Klasse wie den Kontext-Listener zu 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));
}
}
}
}
in web.xml
<listener>
<listener-class>
com.company.InitVariables
</listener-class>
</listener>
jetzt können Sie alle Eigenschaften in Ihrem Projekt mit
System.getProperty(...)
oder in web.xml
<param-name>param-name</param-name>
<param-value>${param-name}</param-value>
Ein Wort der Vorsicht zu der oben angenommenen Lösung.
Ich habe heute mit jboss 5 damit experimentiert: die contextInitialized()
Methode wird erst aufgerufen, nachdem web.xml
geladen wird, so dass die Änderung der Systemeigenschaften nicht rechtzeitig wirksam wird. Seltsamerweise bedeutet dies, dass, wenn Sie die Webapp (ohne Neustart von Jboss) neu bereitstellen, die Eigenschaft überlebt, wenn sie beim letzten Mal festgelegt wurde, so dass es zu funktionieren scheint.
Die Lösung, die wir stattdessen verwenden werden, ist, die Parameter über die Java-Befehlszeile an jboss zu übergeben, z. B. -Dparameter1=value1 -Dparameter2=value2
.
Verwenden Sie replacetoken Aufgabe von Ant. https://blogs.oracle.com/rajeshthekkadath/entry/automation_using_ant_replace_function
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.