code: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements. See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership. The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the  "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  /*
   * $Id$
   */
  
  import java.io.IOException;
  import java.io.PrintWriter;
  
  import javax.naming.InitialContext;
  import javax.rmi.PortableRemoteObject;
  
  import javax.servlet.ServletConfig;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  /**
   * @author Morten Jorgensen
   */
  public class TransformServlet extends HttpServlet {
  
      // Error message used when the XSL transformation bean cannot be created
      private final static String createErrorMsg =
  	"<h1>XSL transformation bean error</h1>"+
  	"<p>An XSL transformation bean could not be created.</p>";
  
      // Transformer - "more than meets the eye".
      private TransformHome transformer;
  
      /**
       * Servlet initializer - look up the bean's home interface
       */
      public void init(ServletConfig config) 
  	throws ServletException{
  	try{
  	    InitialContext context = new InitialContext();
  	    Object transformRef = context.lookup("transform");
  	    transformer =
  		(TransformHome)PortableRemoteObject.narrow(transformRef,
  							   TransformHome.class);
  	} catch (Exception NamingException) {
  	    NamingException.printStackTrace();
  	}
      }
  
      /**
       * Handles "GET" HTTP requests - ie. runs the actual transformation
       */
      public void doGet (HttpServletRequest request, 
  		       HttpServletResponse response) 
  	throws ServletException, IOException {
  
  	String document = request.getParameter("document");
  	String translet = request.getParameter("translet");
  
  	response.setContentType("text/html");
  
  	PrintWriter out = response.getWriter();
  	try{
  	    // Get the insult from the bean
  	    TransformRemote xslt = transformer.create();
  	    String result = xslt.transform(document, translet);
  	    out.println(result);
  	} catch(Exception CreateException){
  	    out.println(createErrorMsg);
  	}
  	out.close();
      }
  
      public void destroy() {
  	System.out.println("Destroy");
      }
  }
  