Thanks for the response Didier!

I know I can store the session id, but how do I then retrieve the
session object by id? I have been looking at ways to access
_ah_SESSION entities using the low level datastore api like this:

           DatastoreService ds =
DatastoreServiceFactory.getDatastoreService();
           com.google.appengine.api.datastore.Query q = new
com.google.appengine.api.datastore.Query("_ah_SESSION");

I can set a filter to return a single object matching a key value, but
is the session id the key value? This is difficult to test, because it
seems the _ah_SESSION entities are not created on the dev server.

I have also read that session objects could be stored in the memcache.
I have been trying this as well using the following code:

            MemcacheService ms =
MemcacheServiceFactory.getMemcacheService();
            ms.get(?);

I am again not certain what to use for the key value in the ms.get()
call. I know the key is prefixed with _ahs, but I don't know the rest.
Is this prefix appended to the session id in some way? This is also
difficult to test on the dev server, because the sessions don't seem
to be stored in the memcache.

Does anyone know the difference in session management on the dev
server vs the production server?

Thanks,
Scott



On Feb 27, 2:15 am, Didier Durand <durand.did...@gmail.com> wrote:
> Hi,
>
> Yes, the simplest way is to store the session id in the datastore.
>
> You can get a session id via javax.servlet.http .HttpSession.getId();
>
> regards
>
> didier
>
> On Feb 26, 7:51 pm, Scott <shathaw...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Howdy,
>
> > I want to only allow my users to have a single session at a time. The
> > act of logging in should invalidate a session that might have been
> > created from another devices as well as sending that device a notice
> > via the channel that the session had ended.
>
> > I actually had this working on my dev server. I used a singleton to
> > hold a copy of the session object and channel information, and when
> > the user logged in from a different device, I would invalidate and
> > send a message. The problem is that since GAE the production server is
> > distributed, I have no guarantee of the same JVM on each call.
>
> > Reading through docs and group post, the only possibility I could
> > think of was to retrieve the session object from the datastore or
> > memcache. Is it possible to read the session object from the either of
> > these locations? If so what is the key and object type?
>
> > Thanks a lot,
> > Scott

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to