This sample show us how to configure a PropertyFinder inside a Servlet, in order to get properties that might change during the execution of a web application.
Este ejemplo nos muestra cómo configurar un PropertyFinder dentro de un Servlet, de modo de obtener propiedades que pueden cambiar durante la ejecución de la aplicación web.
:::properties
var=Hola Mundo SCF
:::properties
sysprop.config.root= <parent dir of sample.properties>
:::xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>ServletSCF</display-name>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>ar.com.scf.web.TestServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>${sysprop.config.root}/sample.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
:::java
package ar.com.scf.sample04;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ar.com.scf.IPropertyFinder;
import ar.com.scf.IPropertyReplacer;
import ar.com.scf.impl.ComposedPropertyFinder;
import ar.com.scf.impl.PropertyFinder;
import ar.com.scf.impl.PropertyReplacer;
import ar.com.scf.impl.SystemPropertyFinder;
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private IPropertyFinder finder;
private IPropertyReplacer replacer;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
SystemPropertyFinder system = new SystemPropertyFinder();
ComposedPropertyFinder finder = new ComposedPropertyFinder(system);
replacer = new PropertyReplacer(finder);
String path = config.getInitParameter("config");
File file = new File(replacer.expand(path));
finder.add(new PropertyFinder(file));
this.finder = finder;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String value = finder.getProperty("var");
resp.getOutputStream().write(value.getBytes());
}
}
:::console
Hola Mundo SCF