package example; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.naming.InitialContext; import javax.naming.Context; /** * Implementation of the test servlet. */ public class TestServlet extends HttpServlet { // Reference to the factory private ConnectionFactoryImpl _factory; /** * <code>init()</code> stores the factory for efficiency since JNDI * is relatively slow. */ public void init() throws ServletException { try { Context ic = new InitialContext(); _factory = (ConnectionFactoryImpl) ic.lookup("java:comp/env/factory"); } catch (Exception e) { throw new ServletException(e); } } /** * Use the connection. All JCA connections must use the following * pattern to ensure the connection is closed even when exceptions * occur. */ public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); ConnectionImpl conn = null; try { out.println("Factory: " + _factory + "<br>"); conn = _factory.getConnection(); out.println("Connection: " + conn + "<br>"); } catch (Exception e) { throw new ServletException(e); } finally { // it is very important to put this close in the finally block if (conn != null) conn.close(); } } }