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. <http://xml.apache.org/cocoon/faqs.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>