From 05f3baee33792a2160ce3d11aa0098d7ec8ccd39 Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 7 Nov 2017 11:13:33 -0800 Subject: [PATCH] Complete final edits on the new Spring Boot with Apache Geode Sample using Spring Scoped Proxy Beans. Resolves Issue #3. --- .../boot-gemfire-with-scoped-proxies.adoc | 358 ++++++++++-------- ...ample-boot-gemfire-with-scoped-proxies.png | Bin 0 -> 109316 bytes 2 files changed, 196 insertions(+), 162 deletions(-) create mode 100644 samples/boot/gemfire-with-scoped-proxies/sample-boot-gemfire-with-scoped-proxies.png diff --git a/docs/src/docs/asciidoc/guides/boot-gemfire-with-scoped-proxies.adoc b/docs/src/docs/asciidoc/guides/boot-gemfire-with-scoped-proxies.adoc index 8008ba6..dcc0fd6 100644 --- a/docs/src/docs/asciidoc/guides/boot-gemfire-with-scoped-proxies.adoc +++ b/docs/src/docs/asciidoc/guides/boot-gemfire-with-scoped-proxies.adoc @@ -1,35 +1,34 @@ -= Spring Session - HttpSession with Apache Geode Client/Server using Spring Boot += Spring Session - HttpSession using Apache Geode with Spring Boot and Scoped Proxy Beans John Blum :toc: -This guide describes how to build a _Spring Boot_ application configured with _Spring Session_ that transparently -delegates to Apache Geode for managing a Web application's `javax.servlet.http.HttpSession` in a clustered/replicated, -highly available and optionally, durable fashion. +This guide describes how to build a _Spring Boot_ Web application configured with _Spring Session_ to transparently +manage a Web application's `javax.servlet.http.HttpSession` using Apache Geode in a clustered (distributed), +replicated, highly available and optionally, durable manner. -In addition, this samples explores the effects of using _Spring Session_ and Apache Geode (or Pivotal GemFire) to -transparently manage the (HTTP) Session when the _Spring Boot_, Web application also declares both Session and Request -scoped bean definitions used by the application when processing requests. +In addition, this samples explores the effects of using _Spring Session_ and Apache Geode to manage the `HttpSession` +when the _Spring Boot_ Web application also declares both "_session_" and "_request_" scope bean definitions to process +client HTTP requests. -This sample originated from a https://stackoverflow.com/questions/45674137/can-session-scope-beans-be-used-with-spring-session-and-gemfire[_StackOverflow_ post], +This sample is based on a https://stackoverflow.com/questions/45674137/can-session-scope-beans-be-used-with-spring-session-and-gemfire[_StackOverflow_ post], which posed the following question... -> _Can session scope beans be used with Spring Session and GemFire?_ +> _Can session scope beans be used with Spring Session and Pivotal GemFire?_ -The poster when on to state... +The poster of the question when on to state and ask... -> If using Spring Session for "session" scoped beans Spring creates an extra HttpSession for this bean, -is this an existing issue? What is the solution for this? +> When using Spring Session for "session" scope beans, Spring creates an extra HttpSession for this bean. +Is this an existing issue? What is the solution for this? -Well, in a nutshell, the answer to the first question is most definitely, *yes*. And, the second statement/question -is not correct/valid, as explained in the answer. +The answer to the first question is most definitely, *yes*. And, the second statement/question is not correct/valid, +as explained in the answer. This sample uses Apache Geode's client/server topology with a pair of _Spring Boot_ applications, one to configure -and run a Geode Server, and another to configure and run a GemFire-based cache client, Spring MVC Web application -making use of the `HttpSession`. +and run a Geode server, and another to configure and run a Geode client, which is also a _Spring_ MVC Web application +making use of an `HttpSession`. -NOTE: The completed guide can be found in the section, -<>, -below. +NOTE: The completed guide can be found below, in section +<>. == Updating Dependencies @@ -56,8 +55,8 @@ If you are using _Maven_, include the following `dependencies` in your `pom.xml` ---- -NOTE: if using Pivotal GemFire, you may substitute the `spring-session-data-gemfire` artifact -for `spring-session-data-geode`. +NOTE: If you are using Pivotal GemFire instead of Apache Geode, you may substitute the `spring-session-data-gemfire` +artifact for `spring-session-data-geode`. ifeval::["{version-snapshot}" == "true"] Since we are using a SNAPSHOT version, we need to add the _Spring_ Snapshot Maven Repository. @@ -113,29 +112,27 @@ We start with a _Spring Boot_ application to configure and bootstrap the Apache include::{samples-dir}boot/gemfire-with-scoped-proxies/src/main/java/sample/server/GemFireServer.java[tags=class] ---- -<1> First, we annotate the Apache Geode server configuration class with `@SpringBootApplication` to declare this as a -_Spring Boot_ application allowing us to leverage all of _Spring Boot's_ features (e.g. _auto-configuration_). -<2> Next, we declare _Spring Data Geode's_ `@CacheServerApplication`, which creates a peer, cache server that allows -our cache client to connect. -<3> (Optional) Then, we declare the `@EnableGemFireHttpSession` annotation to create the necessary server-side `Region` -(by default, "_ClusteredSpringSessions_") used to store the `HttpSessions` state. This step is optional since -the `Region` used to store `Session` state could be manually created. Using `@EnableGemFireHttpSession` is easy -and convenient, and ensure that our client and server-side Region match by name, which is required by GemFire/Geode. -<4> Additionally, and optionally, we also enable Apache Geode's embedded Management service, which allows JMX clients -(e.g. Apache Geode's _Gfsh_ shell tool) to connect to the server and manage the server/cluster. -<5> Finally, we adjust the port that the `CacheServer` will use to listen for cache clients by declaring -a `CacheServerConfigurer` bean that modified the port using SDG's `CacheServerFactoryBean` with property placeholders. -Defaults to *40404* if not adjusted. - -The sample also makes use of _Spring's_ `PropertySourcesPlaceholderConfigurer` in order to externalize -the sample application's configuration using a properties file or with JVM System properties. +<1> First, we annotate the `GemFireServer` class with `@SpringBootApplication` declaring that this is a _Spring Boot_ +application, which allows us to leverage all of _Spring Boot's_ features (e.g. _auto-configuration_). +<2> Next, we also annotate the `GemFireServer` class with _Spring Data Geode's_ `@CacheServerApplication`, +which creates a peer, cache server allowing cache clients to connect. +<3> (_Optional_) Then, we declare the `@EnableGemFireHttpSession` annotation to create the necessary server-side `Region` +(by default, "_ClusteredSpringSessions_") used to store the `HttpSession` state. This step is optional since +the Region used to store session state could be manually created. Using `@EnableGemFireHttpSession` is easy +and convenient, and ensures that our client and server-side Regions match by name, which is required by Apache Geode. +<4> (_Optional_) Additionally, we also enable Apache Geode's embedded Management service, which allows JMX clients +(e.g. Apache Geode's _Gfsh_ shell tool) to connect to the server in order to manage the server or the entire cluster. +<5> Finally, we adjust the port that the `CacheServer` uses to listen for cache client connections by declaring +a `CacheServerConfigurer` bean, which gives us access to SDG's `CacheServerFactoryBean` in order to modify the port. +Property placeholders can be used to externalize the cache server port configuration. The cache server port +defaults to *40404* if not explicitly configured. === Spring Boot, Apache Geode Cache Client Web application Now, we create a _Spring Boot_ Web application exposing our Web service with _Spring_ MVC, running as an Apache Geode cache client connected to our _Spring Boot_, Apache Geode server. The Web application will use _Spring Session_ -backed by Apache Geode to manage (HTTP) Session state in a clustered (i.e. distributed) and replicated, -as well as highly available manner. +backed by Apache Geode to manage `HttpSession` state in a clustered (i.e. distributed), replicated and highly available +manner. [source,java] ---- @@ -143,33 +140,36 @@ include::{samples-dir}boot/gemfire-with-scoped-proxies/src/main/java/sample/clie ---- <1> Like the server, we declare our Web application to be a _Spring Boot_ application -by annotating our application class with `@SpringBootApplication`. -<2> `@Controller` is a _Spring_ Web MVC annotation enabling our MVC handler mapping methods (i.e. methods annotated -with `@RequestMapping`) to process client HTTP requests (e.g. <6>) -<3> We also declare our Web application to be a Geode cache client by annotating our application class with -`@ClientCacheApplication`. Additionally, we adjust a few basic, "DEFAULT" Geode client `Pool` settings. -<4> Next, we declare that the Web application will use _Spring Session_ backed by Apache Geode to manage the (HTTP) -`Session's` state by annotating the nested `ClientCacheConfiguration` class with `@EnableGemFireHttpSession`. -This will create the necessary client-side `PROXY` `Region` (by default, "ClusteredSpringSessions`) corresponding to -the same server `Region` by name. All Session state will be sent from the client to the server through `Region` -data access operations. The client-side `Region` uses the "DEFAULT" `Pool` (of connections) to communicate +by annotating our `Application` class with `@SpringBootApplication`. +<2> `@Controller` is a _Spring_ Web MVC annotation enabling our MVC request mapping handler methods (i.e. methods +annotated with `@RequestMapping`) to process client HTTP requests (e.g. <6>) +<3> We also declare our Web application to be an Apache Geode cache client by annotating our `Application` class +with `@ClientCacheApplication`. Additionally, we adjust a few basic, "DEFAULT" client Pool settings. +<4> Next, we declare that the Web application will use _Spring Session_ backed by Apache Geode to manage +the `HttpSession's` state by annotating the nested `ClientCacheConfiguration` class with `@EnableGemFireHttpSession`. +This will create the necessary client-side `PROXY` Region (by default, "_ClusteredSpringSessions_") corresponding to +the same server Region by name. All session state will be sent from the client to the server through Region +data access operations. The client-side Region uses the "DEFAULT" Pool (of connections) to communicate with the server. -<5> Then, we adjust the port used by the cache client `Pool` to connect to the `CacheServer` using a SDG -`ClientCacheConfigurer`. -<6> We adjust the _Spring_ Web MVC configuration to set the home page, and... -<7> Finally, we declare the `/counts` HTTP request handler method to keep track of the number of instances created by -the Sprig container of both Request and Session scoped proxy beans, of types `RequestScopedProxyBean` -and `SessionScopedProxyBean`, respectively, every time a request is processed by this Web service endpoint. +<5> Then, we adjust the port used by the client Pool to connect to the cache server using _Spring Data Geode's_ +`ClientCacheConfigurer`. This callback interface is similar in purpose to the `CacheServerConfigurer` we saw +in the server's configuration. In this case, the `ClientCacheConfigurer` gives us access to the underlying +SDG `ClientCacheFactoryBean` in order to adjust the configuration of the Apache Geode `ClientCache`. +<6> We adjust the _Spring_ Web MVC configuration to set the home page, and finally... +<7> We declare the `/counts` HTTP request mapping handler method to keep track of the number of instances +created by the _Spring_ container for both "_request_" and "_session_" scoped proxy beans, of types +`RequestScopedProxyBean` and `SessionScopedProxyBean`, respectively, each and every time a request is processed by +the handler method. -TIP: In typical Geode production deployments, where the cluster includes potentially hundreds or thousands of servers -(a.k.a. data nodes), it is more common for clients to connect to 1 or more Geode Locators running in the cluster. -A Locator passes meta-data to clients about the servers available in the cluster, the individual server load -and which servers have the client's data of interest, which is particularly important for direct, single-hop data access -and latency-sensitive operations. See more details about the +TIP: In typical Apache Geode production deployments, where the cluster includes potentially hundreds or thousands +of servers (a.k.a. data nodes), it is more common for clients to connect to 1 or more Geode Locators running +in the same cluster. A Locator passes meta-data to clients about the servers available in the cluster, the individual +server load and which servers have the client's data of interest, which is particularly important for direct, +single-hop data access and latency-sensitive operations. See more details about the http://geode.apache.org/docs/guide/12/topologies_and_comm/cs_configuration/standard_client_server_deployment.html[Client/Server Deployment] in the Apache Geode User Guide. -NOTE: For more information on configuring _Spring Data Geode, refer to the +NOTE: For more information on configuring _Spring Data Geode_, refer to the http://docs.spring.io/spring-data-gemfire/docs/current/reference/html/[Reference Guide]. ==== Enabling GemFire HttpSession Management @@ -180,78 +180,79 @@ out-of-the-box using the following attributes: * `clientRegionShortcut` - specifies the Apache Geode http://geode.apache.org/docs/guide/12/developing/region_options/region_types.html[data management policy] used on the client with http://geode.apache.org/releases/latest/javadoc/org/apache/geode/cache/client/ClientRegionShortcut.html[ClientRegionShortcut] (default is `PROXY`). This attribute is only used when configuring the client `Region`. -* `indexableSessionAttributes` - Identifies the Session attributes by name that should be indexed for querying purposes. -Only Session attributes explicitly identified by name will be indexed. This is useful in situations where your application -is looking up the `HttpSession` by the currently authenticated user's, or principal's, name. -* `maxInactiveIntervalInSeconds` - controls _HttpSession_ idle-timeout expiration (defaults to **30 minutes**). -* `poolName` - name of the dedicated Apache Geode `Pool` used to connect a client to the cluster of servers. -This attribute is only used when the application is a cache client. Defaults to `gemfirePool`. -* `regionName` - specifies the name of the Apache Geode `Region` used to store and manage `HttpSession` state -(default is "*ClusteredSpringSessions*"). +* `indexableSessionAttributes` - Identifies session attributes by name that should be indexed for querying purposes. +Only session attributes explicitly identified by name will be indexed. This is useful in situations where your application +is looking up the `HttpSession` by the currently authenticated principal's name, for example. +* `maxInactiveIntervalInSeconds` - controls `HttpSession` _idle-timeout expiration_ (TTI; defaults to **30 minutes**). +* `poolName` - name of the dedicated Apache Geode Pool used by a client to connect to a cluster of servers (defaults to +"_gemfirePool_"). +* `regionName` - specifies the name of the Apache Geode Region used to store and manage `HttpSession` state +(defaults to "_ClusteredSpringSessions_"). * `serverRegionShortcut` - specifies the Apache Geode http://geode.apache.org/docs/guide/12/developing/region_options/region_types.html[data management policy] used on the server with http://geode.apache.org/releases/latest/javadoc/org/apache/geode/cache/RegionShortcut.html[RegionShortcut] -(default is `PARTITION`). This attribute is only used when configuring server `Regions`, or when a P2P topology -is employed. -* `sessionSerializerBeanName` - refers to the name of the bean that handles serializing the (HTTP) `Session` state +(default is `PARTITION`). This attribute is only used when configuring server Regions, or when Apache Geode's P2P +topology is employed. +* `sessionSerializerBeanName` - refers to the name of the bean that handles serialization of the `HttpSession` state between the client and the server. -NOTE: It is important to remember that the Apache Geode client `Region` name must match a server `Region` -by the same name if the client `Region` is a `PROXY` or `CACHING_PROXY`. Client and server `Region` names -are not required to match if the client `Region` used to store Sessions is `LOCAL` only. However, keep in mind -that Session state will not be propagated to the server when the client Region is only `LOCAL` to the client -and you lose all the benefits of using Apache Geode to store and manage Session state information on the servers -in a cluster in a highly available and replicated manner. +NOTE: It is important to remember that the Apache Geode client Region name must match a server Region by the same name +if the client Region is either a `PROXY` or `CACHING_PROXY`. Client and server Region names are not required to match +if the client Region used to store session state is `LOCAL` only. However, keep in mind that session state will not +be propagated to the server when the client Region is only `LOCAL` to the client. Additionally, you lose all benefits +of using Apache Geode to store and manage session state on servers in a clustered, replicated and highly available +manner. === Session-scoped Proxy Bean -The Geode cache client, Spring Web application defines the `SessionScopedProxyBean` class. +The _Spring Boot_ Apache Geode cache client Web application defines the `SessionScopedProxyBean` domain class. [source,java] ---- -include::{samples-dir}boot/gemfire-with-scoped-proxies/src/main/java/sample/client/model/SessionScopedProxyBean[tags=class] +include::{samples-dir}boot/gemfire-with-scoped-proxies/src/main/java/sample/client/model/SessionScopedProxyBean.java[tags=class] ---- -<1> First, the `SessionScopedProxyBean` domain class is stereotyped as a Spring `@Component` to be picked up in -_Spring's_ classpath component-scan. -<2> Additionally, instances of this class are scoped to the (HTTP) `Session`. That is, each time a client interaction -results in a (HTTP) Session being created (such as by a login event), a single instance of this type will be created -and will last for the duration of the (HTTP) Session. When the Session ends or expires, this instance is destroyed -by the _Spring_ container. If the client re-establishes a new (HTTP) Session, then another, new instance of this type -will be provided to the application's beans. However only ever 1 instance of this type exists for the duration -of the (HTTP) Session, no more! +<1> First, the `SessionScopedProxyBean` domain class is stereotyped as a _Spring_ `@Component` to be picked up by +_Spring's classpath component-scan_. +<2> Additionally, instances of this class are scoped to the `HttpSession`. Therefore, each time a client request +results in a new `HttpSession` (such as during a login event), a single instance of this class is created and will last +for the duration of the `HttpSession`. When the `HttpSession` ends or expires, this instance is destroyed by +the _Spring_ container. If the client re-establishes a new `HttpSession`, then another, new instance of this class +will be provided to the application's beans. However only ever 1 instance of this class exists for the duration of +the `HttpSession` and no more! <3> Finally, this class keeps track of how many instances of this type are created by the _Spring_ container throughout -the entire lifecycle of the application. +the entire application lifecycle. -TIP: More information on Spring's `@SessionScope` (i.e. Session-scoped proxy beans) can be found in the -https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other[Reference Documentation] -and specifically https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-session[this]. +TIP: More information on Spring's `@SessionScope` (i.e. "_session_" scope proxy beans) can be found in the +https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other[Reference Documentation], +along with https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-session[this]. === Request-scoped Proxy Bean -The Geode cache client, Spring Web application defines the `RequestScopedProxyBean` class. +The _Spring Boot_ Apache Geode cache client Web application additionally defines the `RequestScopedProxyBean` +domain class. [source,java] ---- -include::{samples-dir}boot/gemfire-with-scoped-proxies/src/main/java/sample/client/model/RequestScopedProxyBean[tags=class] +include::{samples-dir}boot/gemfire-with-scoped-proxies/src/main/java/sample/client/model/RequestScopedProxyBean.java[tags=class] ---- -<1> First, this `RequestScopedProxyBean` domain class is stereotyped as a Spring `@Component` to be picked up in -_Spring's_ classpath component-scan. -<2> Additionally, instances of this class are scoped to the (HTTP) Request. That is, each time a client request -is sent (e.g. to process a Thread-scoped transaction), a single instance of this type will be created and will last -for the duration of the (HTTP) Request. When the Request ends, this instance is destroyed by the _Spring_ container. -Any subsequent client (HTTP) Requests results in another, new instance of this type, which will be provided to -the application's beans. However, only ever 1 instance of this type exists for the duration of the (HTTP) Request, -no more! +<1> First, this `RequestScopedProxyBean` domain class is stereotyped as a _Spring_ `@Component` to be picked up by +_Spring's classpath component-scan_. +<2> Additionally, instances of this class are scoped to the `HttpServletRequest`. Therefore, each time a client HTTP +request is sent (e.g. to process a Thread-scoped transaction), a single instance of this class will be created +and will last for the duration of the `HttpServletRequest`. When the request ends, this instance is destroyed +by the _Spring_ container. Any subsequent client `HttpServletRequests` results in another, new instance of this +class, which will be provided to the application's beans. However, only ever 1 instance of this class exists +for the duration of the `HttpServletRequest` and no more! <3> Finally, this class keeps track of how many instances of this type are created by the _Spring_ container throughout -the entire lifecycle of the application. +the entire application lifecycle. -TIP: More information on Spring's `@RequestScope` (i.e. Request-scoped proxy beans) can be found in the -https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other[Reference Documentation] -and specifically, https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-request[this]. +TIP: More information on Spring's `@RequestScope` (i.e. "_request_" scope proxy beans) can be found in the +https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other[Reference Documentation], +along with https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-scopes-request[this]. -[spring-session-sample-boot-geode-with-scoped-proxies]] -== Spring Boot Sample Web Application with Apache Geode-managed HttpSessions and Request and Session Scoped Proxy Beans +[[spring-session-sample-boot-geode-with-scoped-proxies]] +== Sample Spring Boot Web Application using Apache Geode-managed HttpSessions with Request and Session Scoped Proxy Beans === Running the Boot Sample Application @@ -260,90 +261,123 @@ You can run the sample by obtaining the {download-url}[source code] and invoking First, you must run the server: ---- -$ ./gradlew :spring-session-sample-boot-gemfire:run [-Dgemfire.log-level=config] +$ ./gradlew :spring-session-sample-boot-gemfire-with-scoped-proxies:run ---- Then, in a separate terminal, run the client: ---- -$ ./gradlew :spring-session-sample-boot-gemfire:bootRun [-Dgemfire.log-level=config] +$ ./gradlew :spring-session-sample-boot-gemfire-with-scoped-proxies:bootRun ---- -You should now be able to access the application at http://localhost:8080/. +You should now be able to access the application at http://localhost:8080/counts. -In this sample, the Web application is the _Spring Boot_, Apache Geode cache client -and the server is standalone, separate (JVM) process. +=== Exploring the Sample Application -=== Exploring the Boot Sample Application +When you access the Web application @ http://localhost:8080/counts, you will see a screen similar to... -Try using the application. Fill out the form with the following information: +image::{samples-dir}/boot/gemfire-with-scoped-proxies/sample-boot-gemfire-with-scoped-proxies.png[] -* **Attribute Name:** _username_ -* **Attribute Value:** _test_ +The table shows 1 row with 3 columns of information. -Now click the **Set Attribute** button. You should now see the attribute name and value displayed in the table -along with an additional attribute (`requestCount`) indicating the number of Session interactions (via HTTP requests). +The `Session ID` and `Session Count` columns show current `HttpSession` information including the current +`HttpSession's` ID along with the number of `HttpSessions` created during the (client) application's current run. -=== How does it work? +Additionally, the current `Request Count` is shown to indicate how many requests have been made by the client, +which in this case is your web browser. -We interact with the standard `javax.servlet.http.HttpSession` in the the Spring Web MVC service endpoint, -shown here for convenience: +You can use your web browser's refresh button to increase both the session and request count. +However, the session count only increases after the current session ends or times out and a new session +has been created for the client. -.src/main/java/sample/client/Application.java -[source,java] +The session will time out after *10 seconds*, which was configured on the server using the `@EnableGemFireHttpSession` +annotation as we saw before (#3)... + +.src/main/java/sample/server/GemFireServer.java +[source, java] ---- -@RequestMapping(method = RequestMethod.POST, path = "/session") -public String session(HttpSession session, ModelMap modelMap, - @RequestParam(name = "attributeName", required = false) String name, - @RequestParam(name = "attributeValue", required = false) String value) { - - modelMap.addAttribute("sessionAttributes", - attributes(setAttribute(updateRequestCount(session), name, value))); - - return INDEX_TEMPLATE_VIEW_NAME; +@SpringBootApplication +@CacheServerApplication(name = "SpringSessionDataGeodeServerWithScopedProxiesBootSample") +@EnableGemFireHttpSession(maxInactiveIntervalInSeconds = 10) // <3> +... +public class GemFireServer { + ... } ---- -Instead of using the embedded HTTP server's `HttpSession`, we are actually persisting the Session state in Apache Geode. -_Spring Session_ creates a cookie named SESSION in your browser that contains the id of your Session. -Go ahead and view the cookies (click for help with https://developer.chrome.com/devtools/docs/resources#cookies[Chrome] -or https://getfirebug.com/wiki/index.php/Cookies_Panel#Cookies_List[Firefox]). +Here, you see that `maxInactiveIntervalInSeconds` is set to *10 seconds*. After 10 seconds, Apache Geode will expire +the `HttpSession`, and upon refreshing your web browser, a new session will be created and the session count +will increase. -NOTE: The following instructions assume you have a local Apache Geode installation. For more information on installation, -see http://geode.apache.org/docs/guide/12/prereq_and_install.html[Prerequisites and Installation Instructions]. +However, every request naturally results in incrementing the request count. -If you like, you can easily remove the Session using `gfsh`. +=== How does it work? -For example, on a Linux-based system type the following at the command-line: +Well, from our defined Web service endpoint in our Spring MVC `@Controller` class on the client... - $ gfsh +.src/main/java/sample/client/Application.java +[source, java] +---- +@RequestMapping(method = RequestMethod.GET, path = "/counts") +public String requestAndSessionInstanceCount(HttpServletRequest request, HttpSession session, Model model) { // <7> -Then, enter the following commands in _Gfsh_, ensuring to replace `70002719-3c54-4c20-82c3-e7faa6b718f3` with the value -of your SESSION cookie, or the Session id returned by the Apache Geode OQL query (which should match): + model.addAttribute("sessionId", session.getId()); + model.addAttribute("requestCount", this.requestBean.getCount()); + model.addAttribute("sessionCount", this.sessionBean.getCount()); -.... -gfsh>connect --jmx-manager=localhost[1099] + return INDEX_TEMPLATE_VIEW_NAME; +} +---- -gfsh>query --query='SELECT * FROM /ClusteredSpringSessions.keySet' +We see that we have injected a reference to the `HttpSession` as a request mapping method handler parameter. +This will result in a new `HttpSession` on the client's first HTTP request. Subsequent requests from the same client +within the duration of the existing, current `HttpSession` will result in the same `HttpSession` being injected. -Result : true -startCount : 0 -endCount : 20 -Rows : 1 +Of course, an `HttpSession` is identified by the session's identifier, which is stored in a Cookie sent between +the client and server during HTTP request processing. -Result ------------------------------------- -70002719-3c54-4c20-82c3-e7faa6b718f3 +Additionally, we also see that we have injected references to the `SessionScopedProxyBean` and `RequestScopedProxyBean` +in our `@Controller` class... -NEXT_STEP_NAME : END +.src/main/java/sample/client/Application.java +[source, java] +---- +@Autowired +private RequestScopedProxyBean requestBean; -gfsh>remove --region=/ClusteredSpringSessions --key="70002719-3c54-4c20-82c3-e7faa6b718f3" -.... +@Autowired +private SessionScopedProxyBean sessionBean; +---- -NOTE: The _Apache Geode User Guide_ contains more detailed instructions on using -http://geode.apache.org/docs/guide/12/tools_modules/gfsh/chapter_overview.html[gfsh]. +Based on the class definitions of these two types, as previously shown, these bean instances are scoped according +to _Spring's_ "_request_" and "_session_" scopes, respectively. The 2 scopes can only be used in Web applications. -Now visit the application at `http://localhost:8080/` again and observe the attribute we added is no longer displayed. +For each and every HTTP request sent by the client (i.e. on each web browser refresh), _Spring_ will create +a new instance of the `RequestScopedProxyBean`. This is why the request count increases with every refresh, +which effectively is sending another HTTP request to the server to access and pull the content. -Alternatively, you can wait **20 seconds** for the Session to timeout and expire and then refresh the page. -The attribute we added should no longer be displayed in the table. +Furthermore, after each new `HttpSession`, a new instance of `SessionScopedProxyBean` is created. This instance +persists for the duration of the session. If the `HttpSession` remains inactive (i.e. no request has been made) +for longer than *10 seconds*, the client's current `HttpSession` will expire. Therefore, on any subsequent client +HTTP request, a new `HttpSession` will be created by the Web container (e.g. Tomcat), which is replaced by +_Spring Session_ and backed with Apache Geode. + +Additionally, this "_session_" scope bean is stored in the `HttpSession`, referenced by a session attribute. +Therefore, you will also notice that the `SessionScopedProxyBean` class, unlike the `RequestScopedProxyBean` class, +is also `java.io.Serializable`... + +.src/main/java/sample/client/model/SessionScopedProxyBean.java +[source, java] +---- +@Component +@SessionScope(proxyMode = ScopedProxyMode.TARGET_CLASS) +public class SessionScopedProxyBean implements Serializable { + ... +} +---- + +This class is `Serializable` since it is stored in the `HttpSession`, which will be transferred as part of +the `HttpSession` when sent to the Apache Geode cluster to be managed. Therefore, the type must be `Serializable`. + +Any `RequestScopedProxyBeans` are not stored in the `HttpSession` and therefore will not be sent to the server, +and as such, do not need to be `Serializable`. diff --git a/samples/boot/gemfire-with-scoped-proxies/sample-boot-gemfire-with-scoped-proxies.png b/samples/boot/gemfire-with-scoped-proxies/sample-boot-gemfire-with-scoped-proxies.png new file mode 100644 index 0000000000000000000000000000000000000000..8390e3c7427768fba4a9ea13867fda3d063d7936 GIT binary patch literal 109316 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

Nz{f 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 w0ByN<8wq$oddg_*sfKx72TXW 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 literal 0 HcmV?d00001