From cocoon-users-return-30216-apmail-xml-cocoon-users-archive=xml.apache.org@xml.apache.org Wed Mar 13 19:21:30 2002 Return-Path: Delivered-To: apmail-xml-cocoon-users-archive@xml.apache.org Received: (qmail 82055 invoked by uid 500); 13 Mar 2002 19:21:30 -0000 Mailing-List: contact cocoon-users-help@xml.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: cocoon-users@xml.apache.org Delivered-To: mailing list cocoon-users@xml.apache.org Received: (qmail 82041 invoked from network); 13 Mar 2002 19:21:29 -0000 Date: Wed, 13 Mar 2002 14:21:15 -0500 (EST) From: Akber Choudhry X-X-Sender: To: Walter Gamba , cc: Subject: Re: how to call a servlet from a generator In-Reply-To: <5.1.0.14.0.20020313181448.01fa8b00@213.254.6.195> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N This might be of help to you - another implementation of JspEngineImpl - for use with Servlet API 2.3 - Tomcat 4.0.x This uses the Request Dispatcher to execute the URI - whether it is a sevlet or a JSP (through servlet) regardless of vendor. Both the JspReader and JSPGenerator work with this implemenataion. So - type="jsp" will work. And, src="/wholeURIasSeenByWebApp". The whole request object will be passed on to your servlet. It uses the same role and interface as cocoon 2 jsp component. Caveats: Headers added by servlet will be ignored. Character encoding implications to be worked out. Here is the code (experimental). It compiles to two classes: ========== begin ========================== package org.apache.cocoon.components.jsp; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.avalon.framework.thread.ThreadSafe; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; import java.io.IOException; import java.io.PrintWriter; import java.io.CharArrayWriter; public class JSPEngineImpl extends AbstractLoggable implements JSPEngine, ThreadSafe { public byte[] executeJSP(String url, HttpServletRequest httpRequest, HttpServletResponse httpResponse, ServletContext context) throws IOException, ServletException, Exception { byte[] bytes = null; // get ServletEngine Dispatcher. javax.servlet.RequestDispatcher rd = context.getRequestDispatcher( url ); ByteResponseWrapper responsewrapper = new ByteResponseWrapper(httpResponse); if (rd != null) { rd.include( httpRequest, responsewrapper ); bytes= responsewrapper.getBytes(); getLogger().info( "Successfully retrieved " + url + " from ServletEngine Dispatcher" ); } else { getLogger().error( "Error getting " + url + " from ServletEngine Dispatcher" ); } return bytes; } public class ByteResponseWrapper extends HttpServletResponseWrapper { private CharArrayWriter output; //TODO - ByteArrayOutputStream public byte[] getBytes() { return output.toString().getBytes(); //TODO - toByteArray - get bytes from JSP response instead of string - CharSet implications } public ByteResponseWrapper(HttpServletResponse response) { super(response); output = new CharArrayWriter(); } public PrintWriter getWriter() { return new PrintWriter(output); } } } ==================end============ On Wed, 13 Mar 2002, Walter Gamba wrote: > > Any help would be appreciated! > Thanx > -- Akber Choudhry Dyanet Inc. http://www.dyanet.com/ --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. To unsubscribe, e-mail: For additional commands, e-mail: