You can call the factory any times it doesn't matter it will return
you the same cache.
Thanks,
Rahul
----------------------------------------------------------
Rahul Juneja
http://techlabs.thoughtclicks.com
2010/5/26 Viðar Svansson <[email protected]>
I am curious, does it matter if I call the factory each time I need an
instance of MemcacheService? I am trying to keep the startup time to
minimum so it would be good to know. Currently I create a global
instance on startup which may or may not be used by the request.
Cheers,
Viðar
On Wed, May 26, 2010 at 3:15 AM, Rahul <[email protected]> wrote:
> A Quick update, I tried this with low level google api and that
seems
> to work perfectly fine and i am able to retrieve values from the
> existing cache and don't load it from db everytime hence reduces my
> jvm restart load time by 3-4 seconds.
>
> Not sure what jsr 107 was not working.
>
> Thanks,
> Rahul
>
>
> On May 25, 10:24 pm, Rahul <[email protected]> wrote:
>> Ikai,
>>
>> I am guessing i am wrong somewhere in designing this cache
solution.
>> Would appreciate if you can tell me where am i going wrong on this.
>> Let me try to explain it once again.
>>
>> I have a set of properties which i load on first call to the
service.
>> and the code I call in the service is as follows.
>>
>> PropertiesCache _cache = PropertiesCache.getInstance();
>>
>> My PropertiesCache is as follows.
>> -------------------------------------------------------------------
>> public class PropertiesCache {
>> private static final Logger log =
>> Logger.getLogger(PropertiesCache.class.getName());
>>
>> private static PropertiesCache _instance;
>> private Cache cache;
>> private PropertiesCache() {
>> try {
>> log.info("In the PropertiesCache
constructor");
>> cache =
>>
CacheManager
.getInstance().getCacheFactory().createCache(Collections.emptyMap());
>> //Loading the cache from the database.
>> //cache.put(Object, Object);
>> } catch (CacheException e) {
>> log.severe("Error in creating the Loading
Cache");
>> }
>>
>> public static synchronized PropertiesCache getInstance() {
>> if (_instance == null) {
>> _instance = new PropertiesCache();
>> }else{
>> log.info("Using existing cache instance
and NO NEW Instance is
>> created");
>> }
>>
>> return _instance;
>> }
>>
>> Also, Let me re-iterate what you said, you are suggesting me not to
>> play around with instance variable instead use the cache variable
and
>> is there any way i can fetch the cache variable once the jvm
restarts.
>>
>> Appreciate all the efforts.
>>
>> Thanks,
>> Rahul
>> On May 25, 5:08 pm, "Ikai L (Google)" <[email protected]> wrote:
>>
>> > The instance itself will be recreated. If you store a value
into Memcache,
>> > it will likely be there the next time you retrieve it. Try this
out.
>>
>> > It's not necessary to do what you've done here. When you create
a Cache
>> > instance, you're really just creating a client to the cache,
and you can do
>> > this each time you need it. There's no need to create a global,
long-lived
>> > instance. What you're seeing is perfectly normal - Java objects
will not
>> > have a longer lifespan than the JVM. If the JVM dies, so will
all the
>> > instantiated objects.
>>
>> > On Tue, May 25, 2010 at 1:28 PM, Rahul <[email protected]>
wrote:
>> > > Toby,
>>
>> > > I also had the same opinion but as you can see the previous
code i
>> > > have given populates the cache again. I guess i am doing
something
>> > > wrong. Appreciate if you can look at that and let me know if
i have to
>> > > do something which i missing.
>>
>> > > Thanks,
>> > > Rahul
>>
>> > > On May 25, 4:00 pm, Toby Reyelts <[email protected]> wrote:
>> > > > Rahul,
>>
>> > > > If you're using App Engine's MemcacheService directly (or
indirectly, for
>> > > > example through our JSR 107 support), then you are talking
to backend
>> > > > memcache instances that have lifetimes separate from your
JVMs.
>>
>> > > > I.E. MemcacheServiceFactory.getMemcacheService<
>> > >http://code.google.com/appengine/docs/java/javadoc/com/google/appengi...()
>>
>> > > > does
>> > > > not create a new memcache backend - it just "connects" to
an existing
>> > > one.
>> > > > You have one logical memcache backend that is shared
between all of your
>> > > > application's JVMs.
>>
>> > > > On Tue, May 25, 2010 at 3:12 PM, Rahul
<[email protected]> wrote:
>> > > > > Ikai,
>>
>> > > > > I am not sure what you mean by Memcache instances stays
up because i
>> > > > > tried the following code and everytime when a new jvm
instance is
>> > > > > created, the cache instance is also created again. Below
is the code i
>> > > > > am using, let me know if i am missing anything or not
doing anything
>> > > > > correct.
>>
>> > > > > Request comes from the following code:
>>
>> > > > > MyCache _cache = MyCache.getInstance();
>> > > > > redirectUrl = _cache.findInCache(requestedURI);
>>
>> > > > > MyCache Class:
>>
>> > > > > private static MyCache _instance;
>> > > > > private Cache cache;
>>
>> > > > > public static synchronized MyCache getInstance() {
>> > > > > if (_instance == null) {
>> > > > > _instance = new MyCache();
>> > > > > }else{
>> > > > > log.info("Using existing cache
instance and NO
>> > > NEW
>> > > > > Instance is
>> > > > > created");
>> > > > > }
>>
>> > > > > return _instance;
>> > > > > }
>>
>> > > > > and in the constructor i am creating new cache fetching
everything
>> > > > > from the database.
>>
>> > > > > Also, i have a listener in place which tells me when the
new jvm
>> > > > > instance is started.
>>
>> > > > > Thanks,
>> > > > > Rahul
>>
>> > > > > On May 24, 3:56 pm, "Ikai L (Google)" <[email protected]>
wrote:
>> > > > > > Memcache instances stay up. They're shared, namespaced
(security)
>> > > > > instances
>> > > > > > and will more likely than not outlive the lifecycles of
your
>> > > application
>> > > > > > instances.
>>
>> > > > > > On Sun, May 23, 2010 at 11:17 PM, Tristan <
>> > > [email protected]
>> > > > > >wrote:
>>
>> > > > > > > Does anyone know the answer to this:
>>
>> > > > > > > If all the JVMs are killed, does the memcache stick
around or is it
>> > > > > > > recycled? (I know memcache expires eventually, just
curious if it
>> > > is
>> > > > > > > possible for it to carry data across JVM valley of
death)
>>
>> > > > > > > Cheers,
>>
>> > > > > > > Tristan
>>
>> > > > > > > --
>> > > > > > > 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]
><google-appengine-java%2B
>> > > [email protected]><google-appengine-java%2B
>> > > > > [email protected]>
>> > > > > > > .
>> > > > > > > For more options, visit this group at
>> > > > > > >http://groups.google.com/group/google-appengine-java?hl=en
.
>>
>> > > > > > --
>> > > > > > Ikai Lan
>> > > > > > Developer Relations, Google App Engine
>> > > > > > Twitter:http://twitter.com/ikai
>> > > > > > Delicious:http://delicious.com/ikailan
>>
>> > > > > > ----------------
>> > > > > > Google App Engine links:
>> > > > > > Blog:http://googleappengine.blogspot.com
>> > > > > > Twitter:http://twitter.com/app_engine
>> > > > > > Reddit:http://www.reddit.com/r/appengine
>>
>> > > > > > --
>> > > > > > 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]
><google-appengine-java%2B
>> > > [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]<google-appengine-java%[email protected]
><google-appengine-java%2B
>> > > [email protected]>
>> > > > > .
>> > > > > For more options, visit this group at
>> > > > >http://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]<google-appengine-java%[email protected]
>
>> > > .
>> > > For more options, visit this group at
>> > >http://groups.google.com/group/google-appengine-java?hl=en.
>>
>> > --
>> > Ikai Lan
>> > Developer Programs Engineer, Google App Engine
>> > Twitter:http://twitter.com/ikai
>> > Delicious:http://delicious.com/ikailan
>>
>> > ----------------
>> > Google App Engine links:
>> > Blog:http://googleappengine.blogspot.com
>> > Twitter:http://twitter.com/app_engine
>> > Reddit:http://www.reddit.com/r/appengine
>>
>>
>
> --
> 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
.
>
>
--
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
.
--
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
.