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
-~----------~----~----~----~------~----~------~--~---

Reply via email to