tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Muthu.Chan...@sectra.se
Subject Re: how to unwrap a Request from RequestFacade
Date Fri, 04 Sep 2009 18:28:02 GMT
Thanks Chris.  Still not having any luck. Let me give you the snippet of 
the code so that you can understand the problem better:

I have a servlet like this

protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
 
           // some code


                RequestFacade rf = (RequestFacade) request;    // this 
throws a class cast exception
                Request realRequest = new 
MyRequestFacade().getRequest(rf);
               Context ctx = _realRequest.getContext();
               StandardManager sessionMgr = (StandardManager) 
ctx.getManager();
               sessionMgr.getActiveSessions();

}


When I debug I see that the request object coming into doGet method of the 
servlet is RequestFacade but I can't assign it directly to a RequestFacade 
object or can't type cast it. Although when I type cast it I don't get any 
compilation error but at runtime it throws as a ClassCastException.

Am I doing something stupid here? :-( Looks simple it is so frustrating as 
when I debug I can open the RequestFacade object and see the Request 
Object, Context, Manager and all the information I need but I don't know 
how to access it. 

Any thoughts from fresh pair eyes?

Thanks,
------------------------------------------
Muthu Chandir
Sectra North America, Inc.
Phone: (800)307-4425 ext 222
Email: mu-cha@sectra.com



From:
Christopher Schultz <chris@christopherschultz.net>
To:
Tomcat Users List <users@tomcat.apache.org>
Date:
09/04/2009 10:28 AM
Subject:
Re: how to unwrap a Request from RequestFacade



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bill,

On 9/3/2009 10:47 PM, Bill Barker wrote:
> "Christopher Schultz" <chris@christopherschultz.net> wrote in message 
> news:4AA03CA3.4010405@christopherschultz.net...
> Muthu,
> 
> On 9/3/2009 11:17 AM, Muthu.Chandir@sectra.se wrote:
>>>>   I am using tomcat 5.5 and just wanted to write a simple servlet to 
get
>>>> some information using StandardManager such as activeSessions,
>>>> expriedSessions, sessionCounter etc.. I am not that familiar with 
these
>>>> classes. I noticed when the request comes into my servlet it comes as
>>>> RequestFacade where the org.apache.catalina.connector.Request is 
wrapped
>>>> inside it. I haven't figured out how to unwrap the Request object so 
that
>>>> I can get the Context from which I can get the Manager 
(StandardManager)
>>>> to access the information I need. Any help with a snippet of code to 
get
>>>> the Request Object from RequestFacade will be appreciated.
> 
> Maybe try something like this:
> 
> public class SneekyRequestFacade
>  extends RequestFacade
> {
>  public SneekyRequestFacade() { super(null); }
> 
>  public Request getRequest(RequestFacade rf)
>  {
>    return rf.request;
>  }
> }
> 
> Now:
> 
> RequestFacade rf = ...;  // get your requestfacade
> Request req = new SneekyRequestFacade().getRequest(rf);
> 
> I think that ought to do it. Isn't OO abuse great?
> 
> 
>> It is great ;).  But you save a couple of lines by just doing straight 
>> introspection.

I had thought about that, but I thought the JVM prevented code from
getting-around access privileges by using introspection. Or is that only
when a SecurityManager is running?

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkqhImUACgkQ9CaO5/Lv0PDVkgCaA9UWhDHNXKdfN2mSPZN1lauK
Z3oAnRphaMCX6vkmjvLH+t/tmUIxp52m
=qxEb
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org




Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message