hi craig!
I implemented a front controller servlet like this in tomcat and put my
jsp's and servlets
behind the WEB-INF directory (*without* being aware of the suggestion in the
J2EE patterns book. I just found it quite sensible to put it there - it's in
the context of the
current webapp but still hidden from the client)
cosnippet:
// note:
// defUrl is of type String[] and contains values retreived from a database
// where logical URLs are mapped to physical ones, i.e. to the client
// it is transparent wether the requested resource is a servlet or a JSP
// e.g. logical URL -> physical URL (in defUrl[] array)
// "/login" -> "/login" ... servlet URL, see
below
// "/top" -> "/jsp/top.jsp" ... path to JSP file
residing in the directory "/WEB-INF/jsp/"
// the file "web.xml" contains e.g. the following:
// <servlet-mapping>
// <servlet-name>Login</servlet-name>
// <url-pattern>/WEB-INF/login</url-pattern>
// </servlet-mapping>
durl = "/WEB-INF"+defUrl[i];
rd = scon.getRequestDispatcher(durl); // scon holds ref. to servlet
context
rd.forward(request,response);
works like a charm. as it seems, you are trying exactly the same (as far as
I can see) and it works also for servlets (which are referenced by the
url-pattern of the servlet mapping in web.xml)
if your configuration does not differ I can only assume that this is a
limitation of weblogic.
if so, I do not find this very favourable, because then it is quite
difficult to implement the front controller pattern in a sensible way which is
portable across different application servers and/or servlet containers.
please let me know if you should find out that weblogic behaves in fact
differently and - if yes -
wether this seems standards conformant (otherwise tomcat's behaviour is, and
tomcat is known to be the reference implementation for servlet & JSP specs)
if I get around to it, I will try to find out what the specs say about this.
greetings
> Hi,
>
> I have a war file deployed on Weblogic 7. I have placed all of my jsp
> files
> under /WEB-INF/jsp as a security measure to control direct client access
> to
> the JSPs. All client access is via a front controller servlet, which
> redirects to a particular JSP based on criteria in the request. My problem
> is if I make a call something like this inside the controller servlet:
>
> ...
>
> dispatcher = context.getRequestDispatcher("/WEB-INF/jsp/my.jsp");
>
> dispatcher.forward(request, response);
>
> ...
>
> I get a 404 resource not found returned to the client. This should be
> really
> simple, so I am frustrated with this! What am I missing? This structure is
> detailed in the J2EE patterns book, but after going back and looking at
> the
> section again I realize there is a lot of hand waving and no code examples
> for this particular part. If I drop the leading slash from the path I get
> a
> NullPointerException, which according to the JavaDocs is the correct
> functionality - it explicitly states the path must begin with a slash and
> represents the path from the root of current context to the required
> JSP/servlet.
>
> I haven't had a chance to try this on another container yet, so perhaps
> this
> is a Weblogic quirk. Also as soon as I post this I am going to try and
> move
> the JSPs out from under the WEB-INF directory just to verify what the
> problem really is (ie. all forwarding is not working, or just forwarding
> to
> resources under WEB-INF). Of course having the JSPs out from under WEB-INF
> defeats the purpose of this exercise in the long run!
>
> Thanks,
>
> Craig
>
>
>
> ____________________________________________________
> To change your JDJList options, please visit:
> http://www.sys-con.com/java/list.cfm
>
> Be respectful! Clean up your posts before replying
> ____________________________________________________
>
--
+++ GMX - Mail, Messaging & more http://www.gmx.net +++
NEU: Mit GMX ins Internet. G�nstige DSL- & Modem/ISDN-Tarife!
____________________________________________________
To change your JDJList options, please visit:
http://www.sys-con.com/java/list.cfm
Be respectful! Clean up your posts before replying
____________________________________________________