tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phillip Morelock <subscripti...@phillipmorelock.com>
Subject Re: CrossContext
Date Tue, 04 Jun 2002 23:04:28 GMT
>From the servlet api:

    Returns a ServletContext object that corresponds to a specified URL on
the server.

    This method allows servlets to gain access to the context for various
parts of the server, and as needed obtain RequestDispatcher objects from the
context. The given path must be begin with "/", is interpreted relative to
the server's document root and is matched against the context roots of other
web applications hosted on this container.

In a security conscious environment, the servlet container may return null
for a given URL.

Parameters:
uripath - a String specifying the context path of another web application in
the container.Returns:
the ServletContext object that corresponds to the named URL, or null if
either none exists or the container wishes to restrict this access.

Is it possible that tomcat returns null by default?  I started digging
through source for you, but you might have to do some more digging.

I checked the source for:
org.apache.catalina.core.StandardContext

Notice this interesting source comment (I don't know where it gets set at
runtime, however):
 /**
     * Should we allow the <code>ServletContext.getContext()</code> method
     * to access the context of other web applications in this server?
     */
    private boolean crossContext = false;

 and also some getters and setters:
/**
     * Return the "allow crossing servlet contexts" flag.
     */
    public boolean getCrossContext() {

        return (this.crossContext);

    }


    /**
     * Set the "allow crossing servlet contexts" flag.
     *
     * @param crossContext The new cross contexts flag
     */
    public void setCrossContext(boolean crossContext) {

        boolean oldCrossContext = this.crossContext;
        this.crossContext = crossContext;
        support.firePropertyChange("crossContext",
                                   new Boolean(oldCrossContext),
                                   new Boolean(this.crossContext));

    }


You should definitely take a look at
org.apache.catalina.core.ApplicationContext.java

since it implements ServletContext for tomcat -- that will show you where to
trace the source path.  it also has an interesting inner class at the top
called :

 protected class PrivilegedGetRequestDispatcher
        implements PrivilegedAction {


good luck
fillup



On 6/4/02 2:44 PM, "Jonathan Perry" <jonpez2@yahoo.com> wrote:

> Anybody?  Please?  This is really doing my head in.
> 
> Thanks a lot,
> JP
> 
> On 4/6/02 10:51 am, "Jonathan Perry" <jonpez2@yahoo.com> wrote:
> 
>> Hi,
>>   I'm running jakarta-tomcat-4.0.3 on Mac OSX.  I've got two contexts set
>> up, "A", and "B".  Both have crossContext="true" in their section of
>> server.xml.  I have a copy of a servlet in each context, which has the
>> following lines of code:
>> 
>> ServletContext c = getServletContext( ).getContext( "/A/" );
>> RequestDispatcher dispatcher = c.getRequestDispatcher( "/helloWorld.jsp" );
>> 
>> This code works as expected in context A, but fails to obtain a context
>> (simply returning null, no exceptions thrown) in context B.  I've searched
>> through archives on several sites, including this one, and haven't found
>> anything promising.  Does anyone have any ideas of what I might be doing
>> wrong?
>> 
>> Thanks for your time,
>> JP
>> 
>> 
>> --
>> To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
>> For additional commands, e-mail: <mailto:tomcat-user-help@jakarta.apache.org>
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:tomcat-user-help@jakarta.apache.org>
> 


--
To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-user-help@jakarta.apache.org>


Mime
View raw message