You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Robert Koberg <ro...@koberg.com> on 2001/02/01 16:32:19 UTC

xalan-j_2_0_D07 bug

I am trying to recreate an example from O'Rielly's Java and XML book (Ch.13
p.398).  When I compile and run the code, I get the following error (code is
below):

Error
=================================================
Error: 500
Location: /tool/servlet/XSLServlet
Internal Servlet Error:

java.lang.IllegalStateException: OutputStream is already being used for this
request
 at
org.apache.tomcat.facade.HttpServletResponseFacade.getWriter(HttpServletResp
onseFacade.java:177)
 at XSLServlet.service(XSLServlet.java:34)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
 at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
 at java.lang.Thread.run(Thread.java:484)

--------------------------------
Java code
=================================================
/* XSLServlet */

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.xalan.xslt.XSLTInputSource;
import org.apache.xalan.xslt.XSLTProcessor;
import org.apache.xalan.xslt.XSLTProcessorFactory;
import org.apache.xalan.xslt.XSLTResultTarget;

public class XSLServlet extends HttpServlet {
   private static final String hostname = "localhost";
   private static final int portNumber = 8080;
   private static final String file = "/tool/xml/config.xml";
   private static final String stylesheet =
"c:/tomcat/webapps/tool/xml/tool.xsl";
   private static final String output =
"c:/tomcat/webapps/tool/xml/boo.htm";

   public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
      res.setContentType("text/html");
      URL theURL = new URL("http", hostname, portNumber, file);
      InputStream in = theURL.openStream();

      try {

         XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
         processor.process(new XSLTInputSource(in), new XSLTInputSource(new
FileInputStream(stylesheet)), new XSLTResultTarget(res.getOutputStream()));

      } catch (Exception e) {

         PrintWriter out = res.getWriter();
         out.println("Error: " + e.getMessage());
         out.close();

      }
   }
}