You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geode.apache.org by Bruno Sinkovic <br...@pymma.com> on 2017/01/27 11:04:07 UTC

Server Cache in standalone server application

Dear All,

Do you know if we can start a Cache in a Web Application, under a Servlet container? If yes, do we need to run a separate process (with gosh for instance) or can the server cache run standalone?
Would you have Java API code examples to illustrate this case? 

Thank you in advance for your prompt support.


Kind Regards,

Bruno Sinkovic
Solution Architect

bruno.sinkovic@pymma.com  
www.pymma.com 
M: +41.79.397.5976





Re: Server Cache in standalone server application

Posted by Lyndon Adams <ly...@gmail.com>.
Yes you can. I love your website!!

> On 27 Jan 2017, at 11:04, Bruno Sinkovic <br...@pymma.com> wrote:
> 
> Dear All,
> 
> Do you know if we can start a Cache in a Web Application, under a Servlet container? If yes, do we need to run a separate process (with gosh for instance) or can the server cache run standalone?
> Would you have Java API code examples to illustrate this case? 
> 
> Thank you in advance for your prompt support.
> 
> 
> Kind Regards,
> 
> Bruno Sinkovic
> Solution Architect
> 
> bruno.sinkovic@pymma.com <ma...@pymma.com>  
> www.pymma.com <http://www.pymma.com/> 
> M: +41.79.397.5976
> 
> 
> 
> 


Re: Server Cache in standalone server application

Posted by John Blum <jb...@pivotal.io>.
Hi Bruno-

Since *Session* management is primarily used in the context of Web
applications to manage (persist, replicate, expire, etc)  the *HTTP*
*Session*, you can take a look at the samples I created for the GemFire
support in *Spring Session*, documentation here
<http://docs.spring.io/spring-session/docs/1.3.0.RELEASE/reference/html5/#samples>
[1],
source here
<https://github.com/spring-projects/spring-session/tree/master/samples> [2].

All of these *Spring Session* samples are *Web applications* that are
launched with *Spring Boot* and embed either a GemFire client/server (
ClientCache) or a P2P (peer Cache) to manage the *HTTP* *Session*.

While you can embed a peer GemFire Cache in your Web application
<https://github.com/spring-projects/spring-session/blob/master/samples/javaconfig/gemfire-p2p/src/main/java/sample/Config.java>
[3],
it is more common that your Web application would be a client
<https://github.com/spring-projects/spring-session/blob/master/samples/javaconfig/gemfire-clientserver/src/main/java/sample/ClientConfig.java>
[4]
(i.e. ClientCache) to a standalone GemFire Server cluster.

SIDE NOTE: the example configuration in [4] contains additional
configuration
<https://github.com/spring-projects/spring-session/blob/master/samples/javaconfig/gemfire-clientserver/src/main/java/sample/ClientConfig.java#L93-L138>
[5]
to coordinate the client and server in an automated integration test
for *Spring
Session* (during the build) and is not needed in your production
application.

If you embed a "peer" Cache your Web application, then that means your Web
application is a member (Server) in the GemFire cluster, which again is not
typical (and not recommended for all UC since your application will be
subject to all the constraints and responsibilities of being a
"member/peer" in a cluster), but is possible.

Now, one last thing... these examples are all *Spring* based, obviously.
However, if you are not using *Spring*, then it is a simple matter to use
similar config in your Web application that uses the GemFire API
<http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/index.html>
[6]
directly to bootstrap a GemFire client or peer cache instance.

In a client/server topology, you might use something like *Gfsh* to launch
members/peers of your cluster.  But, in your Web application, you won't be
using any external tools.  You will be using the GemFire API
<http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/index.html>
[6]
to create a ClientCache using the ClientCacheFactory
<http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/com/gemstone/gemfire/cache/client/ClientCacheFactory.html>
[7].

Of course, *Spring* (and *Spring Data GemFire* in particular) does greatly
simplify all of this for you.

Hope this helps.

Cheers,
John


[1]
http://docs.spring.io/spring-session/docs/1.3.0.RELEASE/reference/html5/#samples
[2] https://github.com/spring-projects/spring-session/tree/master/samples
[3]
https://github.com/spring-projects/spring-session/blob/master/samples/javaconfig/gemfire-p2p/src/main/java/sample/Config.java
[4]
https://github.com/spring-projects/spring-session/blob/master/samples/javaconfig/gemfire-clientserver/src/main/java/sample/ClientConfig.java
[5]
https://github.com/spring-projects/spring-session/blob/master/samples/javaconfig/gemfire-clientserver/src/main/java/sample/ClientConfig.java#L93-L138
[6]
http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/index.html
[7]
http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/com/gemstone/gemfire/cache/client/ClientCacheFactory.html


On Fri, Jan 27, 2017 at 9:57 AM, Kirk Lund <kl...@apache.org> wrote:

> Start with the CacheFactory API to create a Cache in your application JVM.
> If you're running a single node then:
>
> Cache cache = new CacheFactory().create();
>
> If you're running a cluster of multiple nodes, then you should start one
> or more Locator processes using GFSH:
>
> gfsh> start locator ...etc...
>
> And then specify the the Locator hostname[port] when you construct your
> application's Cache:
>
> import static org.apache.geode.distributed.ConfigurationProperties.*;
> Cache cache = new CacheFactory().set(LOCATORS, "hostname[10334]").create();
>
>
> On Fri, Jan 27, 2017 at 3:04 AM, Bruno Sinkovic <br...@pymma.com>
> wrote:
>
>> Dear All,
>>
>> Do you know if we can start a Cache in a Web Application, under a Servlet
>> container? If yes, do we need to run a separate process (with gosh for
>> instance) or can the server cache run standalone?
>> Would you have Java API code examples to illustrate this case?
>>
>> Thank you in advance for your prompt support.
>>
>>
>> Kind Regards,
>>
>> *Bruno Sinkovic*
>> Solution Architect
>>
>> bruno.sinkovic@pymma.com
>> www.pymma.com
>> M: +41.79.397.5976 <+41%2079%20397%2059%2076>
>>
>>
>>
>>
>>
>


-- 
-John
john.blum10101 (skype)

Re: Server Cache in standalone server application

Posted by Kirk Lund <kl...@apache.org>.
Start with the CacheFactory API to create a Cache in your application JVM.
If you're running a single node then:

Cache cache = new CacheFactory().create();

If you're running a cluster of multiple nodes, then you should start one or
more Locator processes using GFSH:

gfsh> start locator ...etc...

And then specify the the Locator hostname[port] when you construct your
application's Cache:

import static org.apache.geode.distributed.ConfigurationProperties.*;
Cache cache = new CacheFactory().set(LOCATORS, "hostname[10334]").create();


On Fri, Jan 27, 2017 at 3:04 AM, Bruno Sinkovic <br...@pymma.com>
wrote:

> Dear All,
>
> Do you know if we can start a Cache in a Web Application, under a Servlet
> container? If yes, do we need to run a separate process (with gosh for
> instance) or can the server cache run standalone?
> Would you have Java API code examples to illustrate this case?
>
> Thank you in advance for your prompt support.
>
>
> Kind Regards,
>
> *Bruno Sinkovic*
> Solution Architect
>
> bruno.sinkovic@pymma.com
> www.pymma.com
> M: +41.79.397.5976 <+41%2079%20397%2059%2076>
>
>
>
>
>