Menu

Sample4

Abstract

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.

sample.properties

:::properties
var=Hola Mundo SCF

Environment

:::properties
sysprop.config.root= <parent dir of sample.properties>

web.xml

:::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>

TestServlet.java

:::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());
  }
}

output

:::console

Hola Mundo SCF

Related

Wiki: Samples