Hmm.. I ve a stupid question now..
Can't we use RemoteServiceServlet.getThreadLocalRequest().getSession()
to get the current session?
I found 'using the session' working in GWT 1.5.
On Dec 1, 9:31 am, jhulford <[EMAIL PROTECTED]> wrote:
> Another thing you can do in order to always send your session
> identifier as part of your request is use the RequestBuilder and add
> the identifier as a request header.
>
> RequestBuilder requestBuilder = new RequestBuilder("POST", "/
> myServletUrl");
> RequestBuilder.setHeader("X-Session-Id", mySessionIdFromCookie);
>
> On Dec 1, 8:31 am, gregor <[EMAIL PROTECTED]> wrote:
>
> > Hi Patrick,
>
> > I think you probably want to call the static async instance according
> > to usual RPC protocol, i.e. in this case SecureRemoteServiceAsync,
> > otherwise you might get confused as to what's going on
>
> > > --- Code, I hope this formats reasonably in the post. ---
> > > public interface SecureRemoteService extends RemoteService {
>
> > > /**
> > > * Utility/Convenience class.
> > > * Use SecureRemoteService.Async.getInstance() to access static
> > > instance of IpsvRmapServiceAsync
> > > */
> > > public static class SecureRemoteServiceAsync {
> > > private static Async ourInstance = null;
>
> > > public static synchronized SecureRemoteServiceAsync
> > > getInstance() {
> > > if (ourInstance == null) {
> > > ourInstance = (SecureRemoteServiceAsync)
> > > GWT.create(SecureRemoteService.class);
> > > }
> > > return ourInstance;
> > > }
>
> > > public void setServiceEntryPoint(String entryPoint) {
> > > // This is where the magic happens.
> > > ((ServiceDefTarget)
> > > ourInstance).setServiceEntryPoint
> > > (GWT.getModuleBaseURL() + entryPoint + "?sessionID=" + getSessionID
> > > ());
> > > }
>
> > > private String getSessionID() {
> > > // Do stuff to get sessionID
> > > return "SessionID";
> > > }
> > > }}
>
> > > --- End of code ---
>
> > Then you use it like so in code:
>
> > SecureRemoteServiceAsync async
> > = SecureRemoteServiceAsync.App.getInstance(); //
> > the URL will now have the SessionID param
> > async.someMethod(param, new secureRemoteServiceCallback());
>
> > Note that this does not work across the board, you have to do this
> > once for each RPC service separately (i.e. once per RPC service
> > interface declared), but if you extend RemoteServiceServlet and
> > override the processCall() method to grab and check sesionID
> > parameter, then use this extended RemoteServiceServlet this for all
> > your RPC services, they will all validate the sessionID.
>
> > I guess it's a matter of taste and situation, but I think I prefer the
> > second method (the Command pattern variation) becasue a) if you want
> > to change the way you handle this session thing, you just do it the
> > Payload base class and the extended RemoteServiceServlet.processCall
> > (), you do not have to change all your RPC Async interfaces and b)
> > this Payload pattern is useful for a lot of other reasons in handling
> > objects over the wire. I think it deals with the XSRF issue too (but
> > I'm sure Reinier will nail me to wall again if wrong!)
>
> > regards
> > gregor
>
> > > From what I can see, this should work if the interface extends the
> > > SecureRemoteService instead of the normal one. However, to properly
> > > create an instance of this class, the programmer now has to do
> > > something different from the normal procedure. Instead of calling the
> > > normal GWT.create(someService.class) and casting it to the Async
> > > version, he has to call on GWT.create(someService.Async.class). This
> > > means he has to modify all of his proxy creation statements as well.
>
> > > Is there any way to get around this?
>
> > > Thanks, Patrick
>
> > > PS: Graag gedaan.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---