Sounds like a better place to ask would be TOMCAT-USER.
On Fri, 14 Sep 2001, Colin Wilson-Salt wrote:
> Date: Fri, 14 Sep 2001 17:26:32 +0100
> From: Colin Wilson-Salt <[EMAIL PROTECTED]>
> Reply-To: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Subject: Specification question.
>
> I know this probably isn't the correct place to ask this, but I reckon you
> guys are probably the most qualified to answer it:
>
> Am I allowed to include and forward between servlet contexts?
>
> i.e. Am I allowed to write a method like this:
>
> private void include(ServletRequest request, ServletResponse response,
> String contextPath, String relativePath)
> throws ServletException, IOException
> {
> ServletContext context = getServletContext().getContext(contextPath);
> RequestDispatcher requestDispatcher =
> context.getRequestDispatcher(relativePath);
> requestDispatcher.include(request, response);
> }
>
Well, it's legal Java code all right ... the "contextPath" string should
contain a server-relative path starting with a slash.
> Because it kind of works. Though if I don't flush() first, things get kind
> of screwed up.
>
It will work *if* the container is configured to allow it. In a security
conscious environment, the server administrator might want to disable this
capability, which can be done as follows in Tomcat 4:
<Context ... crossContext="false" ...>
...
</Context>
> If I am allowed to do this, what should I expect to get if I do stuff like
> getServletContext() in the included servlet? It seems that I get the context
> of the original servlet, not the included one. Which isn't very useful to
> me.
>
A test case would be of use in debugging any problems.
> If I'm _not_ allowed to do this, can someone please tell me so that I can
> start looking for a different way to do this?
>
An alternative mechanism that works for both remote or local hosts would
be to perform a URLConnection to a URL that is in the foreign web app.
See the Networking Trail in the Java Language Tutorial
<http://java.sun.com/docs/books/tutorial/> for an example of this.
> Cheers.
>
Craig