Thank you Pieter. I get it from db and re-cache it if the cached one
is null.

On May 2, 9:44 pm, Pieter Coucke <[email protected]> wrote:
> You don't even need to use a static field in your servlet, you can use a
> normal class field, like this:
>
> public class MyServlet extends HttpServlet {
>
>     private Cache cache;
>
>     public void init(ServletConfig config) throws ServletException {
>         super.init(config);
>         try {
>             CacheFactory cacheFactory =
> CacheManager.getInstance().getCacheFactory();
>             this.cache = cacheFactory.createCache(Collections.EMPTY_MAP);
>         } catch (CacheException exc) {
>             logger.error("Could not create cache: " + exc.getMessage(),exc);
>             throw new ServletException(exc);
>         }
>     }
>
> }
>
> This works because a servlet is only instantiated once (at application
> startup) and if there are multiple servers needed for your app, each Cache
> will point to the same memcache service.
> You need to store the list also elsewhere however, because the memcache
> entry can be removed at any time, so you need to check if it is still in the
> cache before using it:
>
> List list = cache.get("mylist");
> if (list == null) {
>   list = buildList();
>  cache.put('list",list);
>
>
>
> }
> On Sun, May 2, 2010 at 6:07 PM, lembas <[email protected]> wrote:
> > I have the list of city names of my country in my database. It is so
> > rare to add a new city. The list is the same for every user for every
> > session. So I use cache for the list. I want to read the list from DB
> > only for once and to keep it on cache as long as possible.
>
> > Do I need the following everytime I need cache object?
>
> > try {
> >  CacheFactory cacheFactory =
> > CacheManager.getInstance().getCacheFactory();
> >  cache = cacheFactory.createCache(Collections.emptyMap());
> > } catch (CacheException e) {
> > // ...
> > }
>
> > Or is it ok to save it with
> > getServletContext().setAttribute("cache", cache);
> > and get it with when I need it?
> > getServletContext().getAttribute("cache")
>
> > or can I keep it on a static field of MyServlet class?
>
> > --
> > 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
> > [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<google-appengine-java%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine-java?hl=en.
>
> --
> Pieter Coucke
> Onthoo BVBAhttp://www.onthoo.comhttp://www.koopjeszoeker.be
>
> --
> 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 [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group 
> athttp://groups.google.com/group/google-appengine-java?hl=en.

-- 
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 [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-appengine-java?hl=en.

Reply via email to