Caucho Technology
  • resin 4.0
  • dependency-injection servlet configuration


    Resin allows servlets to be configured using dependency injection.

    Demo

      With Resin, servlets can use Java Bean-style configuration. A "Java Bean" is just a Java class that follows a simple set of rules. Each configuration parameter foo has a corresponding setter method setFoo with a single argument for the value. Resin can look at the class using Java's reflection and find the setFoo method. Because Resin can find the bean-style setters from looking at the class, it can configure those setters in a configuration file like the web.xml.

      Files in this tutorial

      WEB-INF/web.xmlConfigures the Servlet with bean-style init
      WEB-INF/classes/test/HelloServlet.javaThe servlet implementation.

      HelloServlet

      The following HelloServlet servlet is a trivial bean-style servlet. Instead of hardcoding the "Hello, world" string, it lets the web.xml configure the string as greeting. To make that work, HelloWorld adds a bean-style setGreeting(String) jmethod.

      WEB-INF/classes/test/HelloServlet.java
      package test;
      
      import java.io.*;
      
      import javax.servlet.http.*;
      import javax.servlet.*;
      
      public class HelloServlet extends HttpServlet {
        private String _greeting = "Default";
      
        public void setGreeting(String greeting)
        {
          _greeting = greeting;
        }
      
        public void doGet (HttpServletRequest req,
                           HttpServletResponse res)
          throws ServletException, IOException
        {
          PrintWriter out = res.getWriter();
      
          out.println(_greeting);
          out.close();
        }
      }
      

      Configuration

      The servlet configuration sets the greeting property inside an init/servlet tag. After Resin instantiates the servlet object, it looks at the configuration file for any <init> section. Resin then calls a setXXX method for each <xxx> tag in <init>. In this case, Resin will call setGreeting

      Resin will perform any type conversion necessary, so you can use integers and doubles as well as strings. After Resin calls the setXXX methods, it will call the init(ServletConfig) method.

      When Resin initializes the servlet, it will make the following calls:

      1. servlet = new test.HelloServlet();
      2. servlet.setGreeting("Hello, World!");
      3. servlet.init(servletConfig);
      WEB-INF/web.xml
      <web-app xmlns="http://caucho.com/ns/resin"
                  xmlns:test="urn:java:test"
                  xmlns:ee="urn:java:ee">
        
        <test:HelloServlet>
          <ee:WebServlet urlPatterns="/hello"/>
      
          <test:greeting>Hello, bean-style World</test:greeting>
        </test:HelloServlet>
        
      </web-app>
      

      Demo


      Copyright © 1998-2011 Caucho Technology, Inc. All rights reserved.
      Resin ® is a registered trademark, and Quercustm, Ambertm, and Hessiantm are trademarks of Caucho Technology.