Replace references to 'Pivotal GemFire' with 'VMware Tanzu GemFire'.
Fix compiler syntax errors in code snippets. Introduce documentation variables where applicable. Format source code. Optimize imports.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
= Contributing to Spring Boot for Apache Geode & Pivotal GemFire
|
||||
= Contributing to Spring Boot for Apache Geode & VMware Tanzu GemFire
|
||||
|
||||
Spring Boot for Apache Geode & Pivotal GemFire (SBDG) is released under the Apache 2.0 license. If you would like to
|
||||
Spring Boot for Apache Geode & VMware Tanzu GemFire (SBDG) is released under the Apache 2.0 license. If you would like to
|
||||
contribute something, or simply want to hack on the code this document should help you get started.
|
||||
|
||||
== Sign the Contributor License Agreement
|
||||
|
||||
36
README.adoc
36
README.adoc
@@ -1,45 +1,45 @@
|
||||
image:https://api.travis-ci.org/spring-projects/spring-boot-data-geode.svg?branch=master["Build Status", link="https://travis-ci.org/spring-projects/spring-boot-data-geode"]
|
||||
|
||||
[[about]]
|
||||
== Spring Boot for Apache Geode & Pivotal GemFire
|
||||
== Spring Boot for Apache Geode & VMware Tanzu GemFire
|
||||
|
||||
_Spring Boot for Apache Geode & Pivotal GemFire_ extends https://projects.spring.io/spring-boot/[_Spring Boot_] with
|
||||
_Spring Boot for Apache Geode & VMware Tanzu GemFire_ extends https://projects.spring.io/spring-boot/[_Spring Boot_] with
|
||||
_auto-configuration_ support as well as other _convention or configuration_ features to simplify the development
|
||||
of _Spring_ applications using either https://geode.apache.org/[Apache Geode] or https://pivotal.io/pivotal-gemfire[Pivotal GemFire]
|
||||
of _Spring_ applications using either https://geode.apache.org/[Apache Geode] or https://pivotal.io/pivotal-gemfire[VMware Tanzu GemFire]
|
||||
in a _Spring_ context.
|
||||
|
||||
This project builds on both https://github.com/spring-projects/spring-data-geode[_Spring Data for Apache Geode_]
|
||||
and https://projects.spring.io/spring-data-gemfire/[_Spring Data for Pivotal GemFire_]
|
||||
and https://projects.spring.io/spring-data-gemfire/[_Spring Data for VMware Tanzu GemFire_]
|
||||
as well as https://spring.io/projects/spring-boot[Spring Boot].
|
||||
|
||||
[[project-goals]]
|
||||
=== Project Goals
|
||||
|
||||
This project adds _Spring Boot_ **auto-configuration** support for both https://geode.apache.org/[Apache Geode]
|
||||
and https://pivotal.io/pivotal-gemfire[Pivotal GemFire].
|
||||
and https://pivotal.io/pivotal-gemfire[VMware Tanzu GemFire].
|
||||
|
||||
Among other things, this project builds on https://projects.spring.io/spring-boot/[_Spring Boot_]
|
||||
as well as https://projects.spring.io/spring-data-gemfire/[_Spring Data for Apache Geode & Pivotal GemFire_]
|
||||
as well as https://projects.spring.io/spring-data-gemfire/[_Spring Data for Apache Geode & VMware Tanzu GemFire_]
|
||||
and additionally offers...
|
||||
|
||||
1. _Auto-configures_ an _Apache Geode_ or _Pivotal GemFire_ (PCC)
|
||||
1. _Auto-configures_ an _Apache Geode_ or _VMware Tanzu GemFire_ (PCC)
|
||||
https://geode.apache.org/releases/latest/javadoc/org/apache/geode/cache/client/ClientCache.html[ClientCache]
|
||||
instance automatically when either _Spring Data for Apache Geode_ or _Spring Data for Pivotal GemFire_
|
||||
instance automatically when either _Spring Data for Apache Geode_ or _Spring Data for VMware Tanzu GemFire_
|
||||
are on the application's CLASSPATH.
|
||||
|
||||
2. _Auto-configures_ either _Apache Geode_ or _Pivotal GemFire_ (PCC) as a _caching provider_ in
|
||||
2. _Auto-configures_ either _Apache Geode_ or _VMware Tanzu GemFire_ (PCC) as a _caching provider_ in
|
||||
https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#cache[_Spring's Cache Abstraction_]
|
||||
when either _Spring Data for Apache Geode_ or _Spring Data for Pivotal GemFire_ are on the application's CLASSPATH.
|
||||
when either _Spring Data for Apache Geode_ or _Spring Data for VMware Tanzu GemFire_ are on the application's CLASSPATH.
|
||||
|
||||
3. _Auto-configures_ _Spring Data for Apache Geode_ or _Spring Data for Pivotal GemFire_
|
||||
3. _Auto-configures_ _Spring Data for Apache Geode_ or _Spring Data for VMware Tanzu GemFire_
|
||||
https://docs.spring.io/spring-data-gemfire/docs/current/reference/html/#gemfire-repositories[Repositories]
|
||||
when _Spring Data for Apache Geode_ or _Spring Data for Pivotal GemFire_ are on the application's CLASSPATH
|
||||
when _Spring Data for Apache Geode_ or _Spring Data for VMware Tanzu GemFire_ are on the application's CLASSPATH
|
||||
and _Spring Boot_ detects SDG _Repositories_ in your _Spring Boot_ application.
|
||||
|
||||
4. Provides additional support for _Spring Boot_/_Spring Data for Apache Geode_/_Pivotal GemFire_ applications
|
||||
4. Provides additional support for _Spring Boot_/_Spring Data for Apache Geode_/_VMware Tanzu GemFire_ applications
|
||||
deployed to PCF using Pivotal Cloud Cache (PCC). Additionally, if your application requires (HTTP) Session State
|
||||
Caching services, you can also take advantage of
|
||||
https://github.com/spring-projects/spring-session-data-geode[_Spring Session for Apache Geode/Pivotal GemFire_].
|
||||
https://github.com/spring-projects/spring-session-data-geode[_Spring Session for Apache Geode/VMware Tanzu GemFire_].
|
||||
|
||||
This, along with many other benefits, are provided by this project.
|
||||
|
||||
@@ -66,17 +66,17 @@ This, along with many other benefits, are provided by this project.
|
||||
=== Examples
|
||||
|
||||
The single, most relevant "_source of truth_" on how to get started quickly and effectively, using Spring Boot
|
||||
for Apache Geode & Pivotal GemFire (SBDG) to solve problems, is to start with the
|
||||
for Apache Geode & VMware Tanzu GemFire (SBDG) to solve problems, is to start with the
|
||||
https://docs.spring.io/spring-boot-data-geode-build/current/reference/html5/#geode-samples[Samples].
|
||||
There, you will find different examples with documentation and code showing you how to use SBDG to appropriately
|
||||
handle specific application concerns, like Caching.
|
||||
|
||||
You can find an example of using SBDG in the Pivotal Cloud Cache (PCC) https://github.com/pivotal-cf/PCC-Sample-App-PizzaStore[Pizza Store]
|
||||
GitHub repository, which is a Spring Boot, Pivotal GemFire `ClientCache` application that connects to PCC when the app
|
||||
GitHub repository, which is a Spring Boot, VMware Tanzu GemFire `ClientCache` application that connects to PCC when the app
|
||||
is deployed to PCF.
|
||||
|
||||
The https://github.com/jxblum/contacts-application/tree/master/boot-example[boot-example] found in the
|
||||
_Contacts Application Reference Implementation_ for _Spring Data for Apache Geode & Pivotal GemFire_ (SDG) uses SBDG
|
||||
_Contacts Application Reference Implementation_ for _Spring Data for Apache Geode & VMware Tanzu GemFire_ (SDG) uses SBDG
|
||||
to manage Books in a _System of Record_ Use Case.
|
||||
|
||||
Then, there is a series of examples that walks a user through a series of steps starting by building a simple,
|
||||
@@ -112,5 +112,5 @@ Please see our https://github.com/spring-projects/spring-boot-data-geode/securit
|
||||
[[license]]
|
||||
== License
|
||||
|
||||
_Spring Boot_, _Spring Boot for Apache Geode_ and _Spring Boot for Pivotal GemFire_ is Open Source Software
|
||||
_Spring Boot_, _Spring Boot for Apache Geode_ and _Spring Boot for VMware Tanzu GemFire_ is Open Source Software
|
||||
released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].
|
||||
|
||||
@@ -12,7 +12,7 @@ buildscript {
|
||||
apply plugin: 'io.spring.convention.root'
|
||||
|
||||
group = 'org.springframework.geode'
|
||||
description = 'Spring Boot for Apache Geode & Pivotal GemFire'
|
||||
description = 'Spring Boot for Apache Geode & VMware Tanzu GemFire'
|
||||
|
||||
//ext['spring.version'] = "$springVersion"
|
||||
//ext['spring-framework.version'] = "$springVersion"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'io.spring.convention.spring-module'
|
||||
apply from: MAVEN_POM_EDITOR_GRADLE
|
||||
|
||||
description = "Spring Boot Actuator Starter for Pivotal GemFire"
|
||||
description = "Spring Boot Actuator Starter for VMware Tanzu GemFire"
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'io.spring.convention.spring-module'
|
||||
apply from: MAVEN_POM_EDITOR_GRADLE
|
||||
|
||||
description = "Spring Boot Logging Starter for Pivotal GemFire with Logback as the logging provider and adaptation of Log4j to SLF4J"
|
||||
description = "Spring Boot Logging Starter for VMware Tanzu GemFire with Logback as the logging provider and adaptation of Log4j to SLF4J"
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'io.spring.convention.spring-module'
|
||||
apply from: MAVEN_POM_EDITOR_GRADLE
|
||||
|
||||
description = "Spring Boot Starter for Spring Session using Pivotal GemFire"
|
||||
description = "Spring Boot Starter for Spring Session using VMware Tanzu GemFire"
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'io.spring.convention.spring-module'
|
||||
apply from: MAVEN_POM_EDITOR_GRADLE
|
||||
|
||||
description = "Spring Boot Test Starter for Pivotal GemFire"
|
||||
description = "Spring Boot Test Starter for VMware Tanzu GemFire"
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'io.spring.convention.spring-module'
|
||||
apply from: MAVEN_POM_EDITOR_GRADLE
|
||||
|
||||
description = "Spring Boot Starter for Pivotal GemFire"
|
||||
description = "Spring Boot Starter for VMware Tanzu GemFire"
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.springframework.geode.boot.actuate.autoconfigure.config.PeerCacheHeal
|
||||
import org.springframework.geode.boot.autoconfigure.ClientCacheAutoConfiguration;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} for Apache Geode/Pivotal GemFire
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} for Apache Geode
|
||||
* {@link HealthIndicator HealthIndicators}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.springframework.geode.boot.actuate.GeodeIndexesHealthIndicator;
|
||||
import org.springframework.geode.boot.actuate.GeodeRegionsHealthIndicator;
|
||||
|
||||
/**
|
||||
* Spring {@link Configuration @Configuration} class declaring Spring beans for general Apache Geode/Pivotal GemFire
|
||||
* Spring {@link Configuration @Configuration} class declaring Spring beans for general Apache Geode
|
||||
* peer {@link Cache} and {@link ClientCache} {@link HealthIndicator HealthIndicators}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.geode.boot.actuate.GeodeContinuousQueriesHealthIndica
|
||||
import org.springframework.geode.boot.actuate.GeodePoolsHealthIndicator;
|
||||
|
||||
/**
|
||||
* Spring {@link Configuration @Configuration} class declaring Spring beans for Apache Geode/Pivotal GemFire
|
||||
* Spring {@link Configuration @Configuration} class declaring Spring beans for Apache Geode
|
||||
* {@link ClientCache} {@link HealthIndicator HealthIndicators}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -43,8 +43,8 @@ import org.springframework.geode.core.util.ObjectUtils;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
* Spring {@link Configuration @Configuration} class declaring Spring beans for Apache Geode/Pivotal GemFire
|
||||
* peer {@link Cache} {@link HealthIndicator HealthIndicators}.
|
||||
* Spring {@link Configuration @Configuration} class declaring Spring beans for Apache Geode peer {@link Cache}
|
||||
* {@link HealthIndicator HealthIndicators}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.Cache
|
||||
|
||||
@@ -36,8 +36,8 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} class used to configure the Apache Geode
|
||||
* / Pivotal GemFire {@link ClientCache} application or peer {@link Cache} member node name
|
||||
* (i.e. {@literal gemfire.name}) with the Spring Boot {@literal spring.application.name} property.
|
||||
* {@link ClientCache} application or peer {@link Cache} member node name (i.e. {@literal gemfire.name})
|
||||
* with the Spring Boot {@literal spring.application.name} property.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.Cache
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.geode.boot.autoconfigure.configuration.GemFirePropert
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} class used to configure Spring Boot
|
||||
* {@link ConfigurationProperties @ConfigurationProperites} classes and beans from the Spring {@link Environment}
|
||||
* containing Apache Geode / Pivotal GemFire configuration properties.
|
||||
* containing Apache Geode configuration properties.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.GemFireCache
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.springframework.data.gemfire.CacheFactoryBean;
|
||||
import org.springframework.data.gemfire.config.annotation.EnableLogging;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration Auto-Configuration} for Apache Geode and Pivotal GemFire logging.
|
||||
* Spring Boot {@link EnableAutoConfiguration Auto-Configuration} for Apache Geode logging.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.boot.autoconfigure.EnableAutoConfiguration
|
||||
|
||||
@@ -65,8 +65,8 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} class used to configure a {@link GemfireTemplate}
|
||||
* for each Apache Geode / Pivotal GemFire {@link Region} declared/defined in
|
||||
* the Spring {@link ConfigurableApplicationContext} in order to perform {@link Region} data access operations.
|
||||
* for each Apache Geode {@link Region} declared/defined in the Spring {@link ConfigurableApplicationContext}
|
||||
* in order to perform {@link Region} data access operations.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.GemFireCache
|
||||
|
||||
@@ -48,7 +48,7 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} for configuring either Apache Geode
|
||||
* or Pivotal GemFire as an (HTTP) {@link Session} state management provider in Spring Session.
|
||||
* as an (HTTP) {@link Session} state management provider in Spring Session.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -32,8 +32,8 @@ import org.springframework.session.data.gemfire.config.annotation.web.http.GemFi
|
||||
/**
|
||||
* Spring Boot {@link EnableAutoConfiguration auto-configuration} class used to configure Spring Boot
|
||||
* {@link ConfigurationProperties @ConfigurationProperites} classes and beans from the Spring {@link Environment}
|
||||
* containing Spring Session configuration properties used to configure either Apache Geode or Pivotal GemFire
|
||||
* to manage (HTTP) Session state.
|
||||
* containing Spring Session configuration properties used to configure either Apache Geode to manage (HTTP) Session
|
||||
* state.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.GemFireCache
|
||||
|
||||
@@ -33,8 +33,8 @@ import org.springframework.geode.boot.autoconfigure.configuration.support.Securi
|
||||
import org.springframework.geode.boot.autoconfigure.configuration.support.ServiceProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} for well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* Spring Boot {@link ConfigurationProperties} for well-known, documented Spring Data for Apache Geode(SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* This class assists the application developer in the auto-completion / content-assist of the well-known, documented
|
||||
* SDG {@link Properties}.
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration;
|
||||
|
||||
import org.apache.geode.cache.RegionShortcut;
|
||||
@@ -23,9 +22,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Spring Session for Apache Geode or Pivotal GemFire
|
||||
* (SSDG) in order to manage (HTTP) Session state with Spring Session, backed by either Apache Geode
|
||||
* or Pivotal GemFire.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Spring Session for Apache Geode (SSDG) in order to
|
||||
* manage (HTTP) Session state with Spring Session, backed by Apache Geode.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.boot.context.properties.ConfigurationProperties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -27,11 +26,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire peer {@link Cache},
|
||||
* {@link ClientCache} and {@link CacheServer} objects.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode peer {@link Cache}, {@link ClientCache}
|
||||
* and {@link CacheServer} objects.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -25,10 +24,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.data.gemfire.server.SubscriptionEvictionPolicy;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode / Pivotal GemFire {@link CacheServer}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode {@link CacheServer}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -23,9 +22,9 @@ import org.apache.geode.cache.client.ClientCache;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode / Pivotal GemFire {@link ClientCache}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode {@link ClientCache}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -23,11 +22,11 @@ import org.apache.geode.cache.client.ClientCache;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode / Pivotal GemFire {@link ClientCache}
|
||||
* Security (authentication & authorization).
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode {@link ClientCache} Security
|
||||
* (authentication & authorization).
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -26,10 +25,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure the {@link DataPolicy} of all {@link Region Regions}
|
||||
* in an Apache Geode / Pivotal GemFire cluster.
|
||||
* in an Apache Geode cluster.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -24,10 +23,9 @@ import org.apache.geode.cache.DiskStoreFactory;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire
|
||||
* {@link DiskStore DiskStores}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode {@link DiskStore DiskStores}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -25,10 +24,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure the application base {@link Package package}
|
||||
* containing the application entity classes. The entity classes are then used to create and configure
|
||||
* Apache Geode / Pivotal GemFire {@link Region Regions}.
|
||||
* Apache Geode {@link Region Regions}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -23,14 +22,13 @@ import org.apache.geode.distributed.Locator;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an embedded Apache Geode / Pivotal GemFire
|
||||
* {@link Locator}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an embedded Apache Geode {@link Locator}.
|
||||
*
|
||||
* A {@link Locator} enables location services used by nodes to join an existing cluster as a peer member
|
||||
* and is also used by clients to discover servers in the cluster.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -21,9 +20,9 @@ import java.util.Properties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire logging.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode logging.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -21,10 +20,9 @@ import java.util.Properties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire management services,
|
||||
* such as HTTP.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode management services, such as HTTP.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -21,12 +20,11 @@ import java.util.Properties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an embedded Apache Geode / Pivotal GemFire
|
||||
* {@literal Manager}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an embedded Apache Geode {@literal Manager}.
|
||||
*
|
||||
* A {@literal Manager} allows users to manage a cluster with tools like {@literal Gfsh} or {@literal Pulse}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -21,17 +20,15 @@ import java.util.Properties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire
|
||||
* {@literal PDX} serialization.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode {@literal PDX} serialization.
|
||||
*
|
||||
* PDX serialization is an alternative serialization format to Java Serialization provided by
|
||||
* Apache Geode / Pivotal GemFire. PDX enables interoperability with native language clients (e.g. C++),
|
||||
* enables objects stored in GemFire/Geode to be queried without causing deserialization and is a more efficient
|
||||
* format than Java Serialization. While PDX is more robust in some ways, it is less robust in others. For example,
|
||||
* PDX does not handle cyclic references in the object graph.
|
||||
* PDX serialization is an alternative serialization format to Java Serialization provided by Apache Geode. PDX enables
|
||||
* interoperability with native language clients (e.g. C++), enables objects stored in GemFire/Geode to be queried
|
||||
* without causing deserialization and is a more efficient format than Java Serialization. While PDX is more robust
|
||||
* in some ways, it is less robust in others. For example, PDX does not handle cyclic references in the object graph.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -23,10 +22,10 @@ import org.apache.geode.cache.Cache;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode / Pivotal GemFire peer {@link Cache}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode peer {@link Cache}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -23,11 +22,11 @@ import org.apache.geode.cache.Cache;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode / Pivotal GemFire peer {@link Cache}
|
||||
* Security (authentication & authorization).
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode peer {@link Cache} Security
|
||||
* (authentication & authorization).
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -23,10 +23,10 @@ import org.apache.geode.cache.client.PoolFactory;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode / Pivotal GemFire peer {@link Pool}.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure an Apache Geode client {@link Pool}.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -22,13 +21,13 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire Security.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode Security.
|
||||
*
|
||||
* Security configuration covers Authentication & Authorization (AUTH) as well as Secure Transport using SSL
|
||||
* (i.e. securing data in motion). Securing data at rest (e.g. disk based encryption) is not yet supported.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* (SDG) {@link Properties}.
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -22,12 +21,12 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.data.gemfire.config.annotation.EnableMemcachedServer;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire embedded services.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode embedded services.
|
||||
*
|
||||
* Currently, the supported embedded services include HTTP service (Jetty), Memcached (protocol) server
|
||||
* and a Redis (protocol) server.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.configuration.support;
|
||||
|
||||
import java.util.Properties;
|
||||
@@ -23,12 +22,12 @@ import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
import org.springframework.data.gemfire.config.annotation.EnableSsl;
|
||||
|
||||
/**
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode / Pivotal GemFire Socket layer SSL.
|
||||
* Spring Boot {@link ConfigurationProperties} used to configure Apache Geode Socket layer SSL.
|
||||
*
|
||||
* The SSL configuration is used to secure communications and data in motion between clients and servers
|
||||
* as well as between peers in a cluster.
|
||||
*
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode/Pivotal GemFire
|
||||
* The configuration {@link Properties} are based on well-known, documented Spring Data for Apache Geode
|
||||
* (SDG) {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Spring Boot auto-configuration for Apache Geode & Pivotal GemFire.
|
||||
* Spring Boot auto-configuration for Apache Geode.
|
||||
*/
|
||||
package org.springframework.geode.boot.autoconfigure;
|
||||
|
||||
@@ -28,8 +28,8 @@ import org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer;
|
||||
import org.springframework.data.gemfire.config.annotation.PoolConfigurer;
|
||||
|
||||
/**
|
||||
* A Spring {@link Configuration} class used to enable subscription on the Apache Geode & Pivotal GemFire
|
||||
* {@literal DEFAULT} {@link Pool} as well as the SDG {@literal gemfirePool} {@link Pool}, only.
|
||||
* A Spring {@link Configuration} class used to enable subscription on the Apache Geode {@literal DEFAULT} {@link Pool}
|
||||
* as well as the SDG {@literal gemfirePool} {@link Pool}, only.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.client.Pool
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
{
|
||||
"name": "session",
|
||||
"type": "org.springframework.geode.boot.autoconfigure.configuration.support.SpringSessionProperties",
|
||||
"description": "Configuration properties for Spring Session backed by Apache Geode or Pivotal GemFire."
|
||||
"description": "Configuration properties for Spring Session backed by Apache Geode."
|
||||
},
|
||||
{
|
||||
"name": "ssl",
|
||||
@@ -100,7 +100,7 @@
|
||||
{
|
||||
"name": "spring.data.gemfire.name",
|
||||
"type": "java.lang.String",
|
||||
"description": "Name of the Apache Geode / Pivotal GemFire member."
|
||||
"description": "Name of the Apache Geode member."
|
||||
},
|
||||
{
|
||||
"name": "spring.data.gemfire.locators",
|
||||
@@ -149,7 +149,7 @@
|
||||
"name": "spring.data.gemfire.cache.log-level",
|
||||
"type": "java.lang.String",
|
||||
"default": "config",
|
||||
"description": "Configure the log-level of an Apache Geode / Pivotal GemFire cache."
|
||||
"description": "Configure the log-level of an Apache Geode cache."
|
||||
},
|
||||
{
|
||||
"name": "spring.data.gemfire.cache.name",
|
||||
@@ -405,7 +405,7 @@
|
||||
"name": "spring.data.gemfire.logging.level",
|
||||
"type": "java.lang.String",
|
||||
"default": "config",
|
||||
"description": "Configures the log-level of an Apache Geode / Pivotal GemFire cache; Alias for 'spring.data.gemfire.cache.log-level'."
|
||||
"description": "Configures the log-level of an Apache Geode cache; Alias for 'spring.data.gemfire.cache.log-level'."
|
||||
},
|
||||
{
|
||||
"name": "spring.data.gemfire.logging.log-disk-space-limit",
|
||||
@@ -840,7 +840,7 @@
|
||||
"name": "spring.data.gemfire.service.http.dev-rest-api-start",
|
||||
"type": "java.lang.Boolean",
|
||||
"default": false,
|
||||
"description": "Configures whether to start the Developer REST API web service. A full installation of Apache Geode or Pivotal GemFire is required and you must set the $GEODE environment variable."
|
||||
"description": "Configures whether to start the Developer REST API web service. A full installation of Apache Geode is required and you must set the $GEODE environment variable."
|
||||
},
|
||||
{
|
||||
"name": "spring.data.gemfire.service.memcached.port",
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.apache.geode.cache.query.CqEvent;
|
||||
import org.springframework.data.gemfire.listener.annotation.ContinuousQuery;
|
||||
|
||||
/**
|
||||
* The {@link TemperatureReadingsContinuousQueriesHandler} class is a POJO containing Apache Geode/Pivotal GemFire
|
||||
* The {@link TemperatureReadingsContinuousQueriesHandler} class is a POJO containing Apache Geode
|
||||
* Continuous Query (CQ) definitions.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -43,8 +43,8 @@ import example.app.books.model.Book;
|
||||
import example.app.books.service.support.CachingBookService;
|
||||
|
||||
/**
|
||||
* Integration tests testing the auto-configuration of Spring's Cache Abstraction with Apache Geode
|
||||
* or Pivotal GemFire as the caching provider.
|
||||
* Integration Tests testing the auto-configuration of Spring's Cache Abstraction with Apache Geode
|
||||
* as the caching provider.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -35,9 +35,9 @@ import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link CachingProviderAutoConfiguration} asserting that neither Apache Geode
|
||||
* nor Pivotal GemFire is configured as the caching provider in Spring's Cache Abstraction when another
|
||||
* caching provider (i.e. {@link CacheManager} bean) has been declared and configured.
|
||||
* Integration Tests for {@link CachingProviderAutoConfiguration} asserting that Apache Geode is not configured as
|
||||
* the caching provider in Spring's Cache Abstraction when another caching provider (i.e. {@link CacheManager} bean)
|
||||
* has been declared and configured.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -35,11 +35,11 @@ import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests asserting and testing the precedence of GemFire, Spring and Spring Data for Apache Geode
|
||||
* & Pivotal GemFire (SDG) {@link Properties} precedence.
|
||||
* Integration Tests asserting and testing the precedence of GemFire, Spring and Spring Data for Apache Geode (SDG)
|
||||
* {@link Properties} precedence.
|
||||
*
|
||||
* Essentially, SDG {@link Properties} should take precedence over (i.e. override) both Spring And Apache Geode
|
||||
* or Pivotal GemFire {@link Properties}.
|
||||
* Essentially, SDG {@link Properties} should take precedence over (i.e. override) both Spring and Apache Geode
|
||||
* {@link Properties}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -54,7 +54,7 @@ import example.geode.query.cq.event.TemperatureReading;
|
||||
import example.geode.query.cq.event.TemperatureReadingsContinuousQueriesHandler;
|
||||
|
||||
/**
|
||||
* Integration Tests testing the auto-configuration of Apache Geode/Pivotal GemFire Continuous Query.
|
||||
* Integration Tests testing the auto-configuration of Apache Geode Continuous Query.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -42,7 +42,7 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Integration Tests testing the auto-configuration of Spring Data for Apache Geode/Pivotal GemFire
|
||||
* Integration Tests testing the auto-configuration of Spring Data for Apache Geode
|
||||
* Function implementations and executions support.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -13,20 +13,18 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.function.executions;
|
||||
|
||||
import org.springframework.data.gemfire.function.annotation.OnMember;
|
||||
|
||||
/**
|
||||
* The {@link Calculator} interface defines Apache Geode/Pivotal GemFire Functions.
|
||||
* The {@link Calculator} interface defines Apache Geode Functions.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.data.gemfire.function.annotation.OnRegion
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@OnMember(groups = "test")
|
||||
@SuppressWarnings("all")
|
||||
// TODO change Function returns type when SDG properly handles Function method return types/values
|
||||
public interface Calculator {
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ import org.springframework.geode.util.GeodeConstants;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests asserting the configuration and behavior of Apache Geode & Pivotal GemFire logging
|
||||
* when configured with Spring Boot auto-configuration.
|
||||
* Integration Tests asserting the configuration and behavior of Apache Geode logging when configured with
|
||||
* Spring Boot auto-configuration.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -38,8 +38,7 @@ import org.springframework.geode.boot.autoconfigure.repository.service.CustomerS
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests testing the auto-configuration of Spring Data Repositories backed by either Apache Geode
|
||||
* or Pivotal GemFire.
|
||||
* Integration Tests testing the auto-configuration of Spring Data Repositories backed by Apache Geode.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* or implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.geode.boot.autoconfigure.repository.repo;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
@@ -21,7 +20,7 @@ import org.springframework.geode.boot.autoconfigure.repository.model.Customer;
|
||||
|
||||
/**
|
||||
* The {@link CustomerRepository} interface defines a Spring Data {@link CrudRepository} for performing basic CRUD
|
||||
* and simple query data access operations on {@link Customer} objects stored in Apache Geode or Pivotal GemFire.
|
||||
* and simple query data access operations on {@link Customer} objects stored in Apache Geode.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.data.repository.CrudRepository
|
||||
|
||||
@@ -34,8 +34,8 @@ import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests testing the auto-configuration of Apache Geode/Pivotal GemFire Security
|
||||
* authentication/authorization in a cloud, managed context (e.g. Pivotal CloudFoundry)
|
||||
* Integration Tests testing the auto-configuration of Apache Geode Security authentication/authorization in a cloud,
|
||||
* managed context (e.g. CloudFoundry).
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.security.Principal
|
||||
|
||||
@@ -42,8 +42,7 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
* Pivotal Cloud Cache (PCC) service instance.
|
||||
*
|
||||
* This Use Case is common when users want to deploy their Spring Boot, {@link ClientCache} apps to
|
||||
* Pivotal CloudFoundry (PCF) however, want to connect those apps to an external Apache Geode or Pivotal GemFire
|
||||
* cluster.
|
||||
* Pivotal CloudFoundry (PCF) however, want to connect those apps to an external Apache Geode cluster.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
|
||||
@@ -31,8 +31,8 @@ import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests testing the auto-configuration of Apache Geode/Pivotal GemFire Security
|
||||
* authentication/authorization in a local, non-managed context.
|
||||
* Integration Tests testing the auto-configuration of Apache Geode Security authentication/authorization in a local,
|
||||
* non-managed context.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.security.Principal
|
||||
|
||||
@@ -53,7 +53,7 @@ import example.echo.config.EchoClientConfiguration;
|
||||
import example.echo.config.EchoServerConfiguration;
|
||||
|
||||
/**
|
||||
* Integration Tests testing the auto-configuration of Apache Geode/Pivotal GemFire SSL.
|
||||
* Integration Tests testing the auto-configuration of Apache Geode SSL.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -42,11 +42,10 @@ import org.springframework.session.data.gemfire.config.annotation.web.http.GemFi
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests for auto-configuration of Spring Session using either Apache Geode or Pivotal GemFire
|
||||
* as the {@link Session} state management provider.
|
||||
* Integration Tests for auto-configuration of Spring Session using either Apache Geode as the {@link Session} state
|
||||
* management provider.
|
||||
*
|
||||
* This test asserts that the Spring Boot auto-configuration properly configures Spring Session
|
||||
* with either Apache Geode or Pivotal GemFire
|
||||
* This test asserts that the Spring Boot auto-configuration properly configures Spring Session with Apache Geode.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -51,8 +51,8 @@ import org.springframework.web.context.ConfigurableWebApplicationContext;
|
||||
import org.springframework.web.context.support.GenericWebApplicationContext;
|
||||
|
||||
/**
|
||||
* Integration Test for the auto-configuration of Spring Session using either Apache Geode or Pivotal GemFire
|
||||
* as the {@link Session} state management provider.
|
||||
* Integration Test for the auto-configuration of Spring Session using Apache Geode as the {@link Session} state
|
||||
* management provider.
|
||||
*
|
||||
* This test asserts that the Spring Boot auto-configuration can be customized using either {@link Properties}
|
||||
* or a {@link SpringSessionGemFireConfigurer}.
|
||||
|
||||
@@ -41,7 +41,7 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests for auto-configuration of Spring Session using a custom Spring Session {@link Session} state
|
||||
* management provider, asserting that neither Apache Geode nor Pivotal GemFire is configured.
|
||||
* management provider, asserting that Apache Geode is configured.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -35,10 +35,9 @@ import org.springframework.session.data.gemfire.config.annotation.web.http.GemFi
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* Integration Tests asserting the configuration of Spring Session using Spring Boot's
|
||||
* Integration Tests asserting the configuration of Spring Session using Spring Boot'
|
||||
* {@literal spring.session.store-type} configuration property set to {@literal none}
|
||||
* and assert neither Apache Geode nor Pivotal GemFire was configured as the Session
|
||||
* state management provider.
|
||||
* and assert Apache Geode was not configured as the Session state management provider.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.GemFireCache
|
||||
|
||||
@@ -32,9 +32,8 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link SpringSessionAutoConfiguration} asserting that Spring Session
|
||||
* (for Apache Geode/Pivotal GemFire) is not auto-configured when the Spring {@link ApplicationContext}
|
||||
* is not a {@link WebApplicationContext}.
|
||||
* Integration tests for {@link SpringSessionAutoConfiguration} asserting that Spring Session (for Apache Geode)
|
||||
* is not auto-configured when the Spring {@link ApplicationContext} is not a {@link WebApplicationContext}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties containing Spring Data for Apache Geode / Pivotal GemFire properties.
|
||||
# Spring Boot application.properties containing Spring Data for Apache Geode properties.
|
||||
|
||||
spring.data.gemfire.name=GemFirePropertiesIntegrationTests
|
||||
spring.data.gemfire.locators=localhost[11235],localhost[12480]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties for testing Apache Geode/Pivotal GemFire Security in a cloud context.
|
||||
# Spring Boot application.properties for testing Apache Geode Security in a cloud context.
|
||||
|
||||
vcap.application.application_id=c50bb519-2739-4fa3-8750-02c051e35735
|
||||
vcap.application.application_name=boot-test
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties used in server for testing Apache Geode/Pivotal GemFire Security in a hybrid cloud context.
|
||||
# Spring Boot application.properties used in server for testing Apache Geode Security in a hybrid cloud context.
|
||||
|
||||
test.security.context.username=phantom
|
||||
test.security.context.password=s3cr3t
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties used in client for testing Apache Geode/Pivotal GemFire Security in a local context.
|
||||
# Spring Boot application.properties used in client for testing Apache Geode Security in a local context.
|
||||
|
||||
spring.data.gemfire.security.username=ghostrider
|
||||
spring.data.gemfire.security.password=p@55w0rd
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties used in server for testing Apache Geode/Pivotal GemFire Security in a local context.
|
||||
# Spring Boot application.properties used in server for testing Apache Geode Security in a local context.
|
||||
|
||||
test.security.context.username=ghostrider
|
||||
test.security.context.password=p@55w0rd
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties used in server for testing Apache Geode/Pivotal GemFire Security in a multi-cloudcache service instance (PCF) context.
|
||||
# Spring Boot application.properties used in server for testing Apache Geode Security in a multi-cloudcache service instance (PCF) context.
|
||||
|
||||
test.security.context.username=master
|
||||
test.security.context.password=p@55w0rd
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Session for Apache Geode/Pivotal GemFire (Test) Properties
|
||||
# Spring Session for Apache Geode (SSDG) Test Properties
|
||||
|
||||
spring.session.data.gemfire.cache.client.pool.name=DEAD
|
||||
spring.session.data.gemfire.cache.client.region.shortcut=LOCAL
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Spring Boot application.properties for testing Apache Geode/Pivotal GemFire SSL
|
||||
# Spring Boot application.properties for testing Apache Geode SSL
|
||||
|
||||
spring.boot.data.gemfire.security.ssl.keystore.name=test-trusted.keystore
|
||||
spring.data.gemfire.security.ssl.keystore.password=s3cr3t
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
|
||||
apply plugin: 'io.spring.convention.docs'
|
||||
apply plugin: 'io.spring.convention.spring-test'
|
||||
|
||||
description = "Generate Javadoc and Reference Documentation on Spring Boot for Apache Geode & Pivotal GemFire"
|
||||
description = "Generate Javadoc and Reference Documentation on Spring Boot for Apache Geode & VMware Tanzu GemFire"
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
[[appendix]]
|
||||
== Appendix
|
||||
:geode-name: {apache-geode-name}
|
||||
:gemfire-name: {pivotal-gemfire-name}
|
||||
:cloud-cache-name: {pivotal-cloudcache-name}
|
||||
|
||||
The following appendices provide additional help while developing Spring Boot applications backed by Apache Geode
|
||||
or Pivotal GemFire.
|
||||
The following appendices provide additional help while developing Spring Boot applications backed by {geode-name}.
|
||||
|
||||
_Table of Contents_
|
||||
|
||||
@@ -24,9 +26,9 @@ include::configuration-properties.adoc[leveloffset=+1]
|
||||
[[geode-auto-configuration-disable]]
|
||||
=== Disabling Auto-configuration
|
||||
|
||||
If you would like to disable the _auto-configuration_ of any feature provided by Spring Boot for Apache Geode
|
||||
or Pivotal GemFire, then you can specify the _auto-configuration_ class in the `exclude` attribute
|
||||
of the `@SpringBootApplication` annotation, as follows:
|
||||
If you would like to disable the _auto-configuration_ of any feature provided by Spring Boot for {geode-name},
|
||||
then you can specify the _auto-configuration_ class in the `exclude` attribute of the `@SpringBootApplication`
|
||||
annotation, as follows:
|
||||
|
||||
.Disable Auto-configuration of PDX
|
||||
[source,java]
|
||||
@@ -58,7 +60,7 @@ public class MySpringBootApplication {
|
||||
[[geode-auto-configuration-disable-classes]]
|
||||
==== Complete Set of Auto-configuration Classes
|
||||
|
||||
The current set of _auto-configuration_ classes in Spring Boot for Apache Geode & Pivotal GemFire (SBDG) include:
|
||||
The current set of _auto-configuration_ classes in Spring Boot for {geode-name} (SBDG) include:
|
||||
|
||||
* `CacheNameAutoConfiguration`
|
||||
* `CachingProviderAutoConfiguration`
|
||||
@@ -77,30 +79,31 @@ The current set of _auto-configuration_ classes in Spring Boot for Apache Geode
|
||||
* `SslAutoConfiguration`
|
||||
|
||||
[[geode-gemfire-switch]]
|
||||
=== Switch from Apache Geode to Pivotal Cloud Cache (a.k.a. Pivotal GemFire)
|
||||
=== Switch from {geode-name} to {gemfire-name} for VMs (formerly known as Pivotal Cloud Cache)
|
||||
|
||||
First, understand that {pivotal-gemfire-website}[Pivotal GemFire] is being succeeded by {pivotal-cloudcache-website}[Pivotal Cloud Cache] (PCC).
|
||||
Therefore, all references to Pivotal GemFire implies for Pivotal Cloud Cache (PCC) as well.
|
||||
First, understand that {pivotal-gemfire-website}[Pivotal GemFire] is being succeeded by
|
||||
{pivotal-cloudcache-website}[Pivotal Cloud Cache] (PCC) or {cloud-cache-name}. Therefore, all references to
|
||||
Pivotal GemFire implies for Pivotal Cloud Cache (PCC) or {cloud-cache-name} as well.
|
||||
|
||||
When it comes to Spring's support, whether you are developing with Open Source Software (OSS) {apache-geode-website}[Apache Geode]
|
||||
When it comes to Spring's support, whether you are developing with Open Source Software (OSS) {apache-geode-website}[{geode-name}]
|
||||
or developing for {pivotal-cloudcache-website}[Pivotal Cloud Cache], Spring has you covered.
|
||||
|
||||
At a strategic-level, this means:
|
||||
|
||||
1. From _Open Source Software_ (e.g. Apache Geode) to _Commercial_ (e.g. Pivotal Cloud Cache)
|
||||
1. From _Open Source Software_ (e.g. {geode-name}) to _Commercial_ (e.g. Pivotal Cloud Cache)
|
||||
2. From _Non-Managed Environments_ (e.g. Standalone, Externally Managed) to _Managed Environments_ (e.g. Pivotal Platform)
|
||||
3. With _**little**_ to _**no code or configuration**_ changes necessary. It just works!
|
||||
|
||||
You may also migrate your Spring Boot applications away from Pivotal Platform using the commercial software offering,
|
||||
Pivotal Cloud Cache, and switch back to Open Source Apache Geode running in a standalone, externally managed environment.
|
||||
Pivotal Cloud Cache, and switch back to Open Source {geode-name} running in a standalone, externally managed environment.
|
||||
|
||||
SBDG will never lock you in! It is, and always will be, your choice!
|
||||
|
||||
Technically, this means to go from Apache Geode to Pivotal Cloud Cache (PCC), you must change 2 things.
|
||||
Technically, this means to go from {geode-name} to Pivotal Cloud Cache (PCC), you must change 2 things.
|
||||
|
||||
First, you must switch the dependency from `spring-geode-starter` to `spring-gemfire-starter`:
|
||||
|
||||
.Maven POM with Spring Boot for Apache Geode
|
||||
.Maven POM with Spring Boot for {geode-name}
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -111,7 +114,7 @@ First, you must switch the dependency from `spring-geode-starter` to `spring-gem
|
||||
</dependency>
|
||||
----
|
||||
|
||||
.Gradle build file with Spring Boot for Apache Geode
|
||||
.Gradle build file with Spring Boot for {geode-name}
|
||||
[source,groovy]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -122,7 +125,7 @@ dependencies {
|
||||
|
||||
To:
|
||||
|
||||
.Maven POM with Spring Boot for Pivotal GemFire
|
||||
.Maven POM with Spring Boot for {gemfire-name}
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -133,7 +136,7 @@ To:
|
||||
</dependency>
|
||||
----
|
||||
|
||||
.Gradle build file with Spring Boot for Pivotal GemFire
|
||||
.Gradle build file with Spring Boot for {gemfire-name}
|
||||
[source,groovy]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -142,10 +145,10 @@ dependencies {
|
||||
}
|
||||
----
|
||||
|
||||
Second, to obtain the commercial Pivotal Cloud Cache (PCC) or Pivotal GemFire bits, you must declare the appropriate
|
||||
repository declaration in your Maven POM or Gradle build file:
|
||||
Second, to obtain the commercial Pivotal Cloud Cache (PCC) or {gemfire-name} bits, you must declare
|
||||
the appropriate repository declaration in your Maven POM or Gradle build file:
|
||||
|
||||
.Maven Repository definition to acquire PCC or Pivotal GemFire bits
|
||||
.Maven Repository definition to acquire PCC or {gemfire-name} bits
|
||||
[source,xml]
|
||||
----
|
||||
<repositories>
|
||||
@@ -157,7 +160,7 @@ repository declaration in your Maven POM or Gradle build file:
|
||||
</repositories>
|
||||
----
|
||||
|
||||
.Gradle Repository definition to acquire PCC or Pivotal GemFire bits
|
||||
.Gradle Repository definition to acquire PCC or {gemfire-name} bits
|
||||
[source,groovy]
|
||||
----
|
||||
repositories {
|
||||
@@ -188,9 +191,9 @@ and password to configure access to the server in your Maven settings (i.e. ~/.m
|
||||
</settings>
|
||||
----
|
||||
|
||||
TIP: For more details on acquiring the Pivotal Cloud Cache (PCC) or Pivotal GemFire bits, see Pivotal GemFire's
|
||||
TIP: For more details on acquiring the Pivotal Cloud Cache (PCC) or {gemfire-name} bits, see {gemfire-name}'s
|
||||
https://gemfire.docs.pivotal.io/{pivotal-gemfire-version}/gemfire/getting_started/installation/obtain_gemfire_maven.html[documentation].
|
||||
When using the `spring-gemfire-starter`, you do not need to declare the Pivotal GemFire dependencies noted in
|
||||
When using the `spring-gemfire-starter`, you do not need to declare the {gemfire-name} dependencies noted in
|
||||
the documentation. The `spring-gemfire-starter` does that for you! You only need to declare the repository
|
||||
and configure your settings.
|
||||
|
||||
@@ -200,7 +203,7 @@ Done!
|
||||
|
||||
It should just work without any code or configuration changes and if this is not the case, for whatever reason, then we
|
||||
will work to correct it, short of any feature differences between Pivotal Cloud Cache (PCC) that cannot be accomplished
|
||||
with Apache Geode itself, of course.
|
||||
with {geode-name} itself, of course.
|
||||
|
||||
Spring Boot's _auto-configuration_ and _convention over configuration_ approach tries to determine the runtime
|
||||
environment in order to handle infrastructure logistics so you do not have to. This is true inside or outside
|
||||
@@ -208,29 +211,29 @@ of a managed environment so that we can provide users with a consistent and reli
|
||||
and issues that arise by switching environments in the first place. Switching environments is especially common as you
|
||||
migrate your Spring Boot applications from DEV to TEST, followed by STAGING, and finally, to PRODUCTION.
|
||||
|
||||
Of course, it will nearly always be easier to "run" Apache Geode as a "managed" service inside Pivotal Platform (PCF)
|
||||
using Pivotal Cloud Cache (PCC) than it will be to manage an externally run Apache Geode cluster, especially if your
|
||||
Of course, it will nearly always be easier to "run" {geode-name} as a "managed" service inside Pivotal Platform (PCF)
|
||||
using Pivotal Cloud Cache (PCC) than it will be to manage an externally run {geode-name} cluster, especially if your
|
||||
Use Cases require maximum performance and high availability. We highly recommend this approach when and where possible,
|
||||
but it is still your choice.
|
||||
|
||||
[[geode-cluster-configuration-bootstrapping]]
|
||||
=== Running an Apache Geode or Pivotal GemFire cluster using Spring Boot from your IDE
|
||||
=== Running an {geode-name} cluster using Spring Boot from your IDE
|
||||
|
||||
As described in <<geode-clientcache-applications>>, it is possible to configure and run a small Apache Geode
|
||||
or Pivotal GemFire cluster from inside your IDE using Spring Boot. This is extremely helpful during development
|
||||
since it allows you to manually spin up, test and debug your applications quickly and easily.
|
||||
As described in <<geode-clientcache-applications>>, it is possible to configure and run a small {geode-name} cluster
|
||||
from inside your IDE using Spring Boot. This is extremely helpful during development since it allows you to manually
|
||||
spin up, test and debug your applications quickly and easily.
|
||||
|
||||
Spring Boot for Apache Geode/Pivotal GemFire includes such a class:
|
||||
Spring Boot for {geode-name} includes such a class:
|
||||
|
||||
.Spring Boot application class used to configure and bootstrap an Apache Geode/Pivotal GemFire server
|
||||
.Spring Boot application class used to configure and bootstrap an {geode-name} server
|
||||
[source,java]
|
||||
----
|
||||
include::{docs-src-dir}/org/springframework/geode/docs/example/app/server/SpringBootApacheGeodeCacheServerApplication.java[tags=class]
|
||||
----
|
||||
|
||||
This class is a proper Spring Boot application that can be used to configure and bootstrap multiple Apache Geode
|
||||
or Pivotal GemFire servers and joining them together to form a small cluster simply by modifying
|
||||
the runtime configuration of this class ever so slightly.
|
||||
This class is a proper Spring Boot application that can be used to configure and bootstrap multiple {geode-name} servers
|
||||
and join them together to form a small cluster simply by modifying the runtime configuration of this class ever so
|
||||
slightly.
|
||||
|
||||
Initially you will want to start a single, primary server with the embedded Locator and Manager service.
|
||||
|
||||
@@ -241,7 +244,7 @@ route data requests directly to the server hosting the data (a.k.a. single-hop a
|
||||
is partitioned/sharded across servers in the cluster. Locator Pools include support for load balancing connections
|
||||
and handling automatic fail-over in the event of failed connections, among other things.
|
||||
|
||||
The Manager service enables you to connect to this server using _Gfsh_ (the Apache Geode and Pivotal GemFire
|
||||
The Manager service enables you to connect to this server using _Gfsh_ (the {geode-name}
|
||||
{apache-geode-docs}/tools_modules/gfsh/chapter_overview.html[shell tool]).
|
||||
|
||||
To start our primary server, create a run configuration in your IDE for the `SpringBootApacheGeodeCacheServerApplication`
|
||||
@@ -421,9 +424,8 @@ Client Connections : 0
|
||||
|
||||
Now, let's start some additional servers to scale-out our cluster.
|
||||
|
||||
To do so, you simply need to vary the name of the members we will add to our cluster as peers. Apache Geode
|
||||
and Pivotal GemFire require that the members in a cluster be named and the names of each member in the cluster
|
||||
be unique.
|
||||
To do so, you simply need to vary the name of the members we will add to our cluster as peers. {geode-name} requires
|
||||
that the members in a cluster be named and the names of each member in the cluster be unique.
|
||||
|
||||
Additionally, since we are running multiple instances of our `SpringBootApacheGeodeCacheServerApplication` class,
|
||||
which also embeds a `CacheServer` instance enabling cache clients to connect, we need to be careful to vary our
|
||||
@@ -548,47 +550,45 @@ Running : true
|
||||
Client Connections : 0
|
||||
----
|
||||
|
||||
Congratulations! You just started a small Apache Geode/Pivotal GemFire cluster, with 3 members, using Spring Boot
|
||||
from inside your IDE.
|
||||
Congratulations! You just started a small {geode-name} cluster, with 3 members, using Spring Boot from inside your IDE.
|
||||
|
||||
It is pretty simple to build and run a Spring Boot, Apache Geode/Pivotal GemFire, `ClientCache` application
|
||||
that connects to this cluster. Simply include and use Spring Boot for Apache Geode/Pivotal GemFire, ;-).
|
||||
It is pretty simple to build and run a Spring Boot, {geode-name}, `ClientCache` application that connects to
|
||||
this cluster. Simply include and use Spring Boot for {geode-name}, ;-).
|
||||
|
||||
[[geode-testing]]
|
||||
=== Testing
|
||||
|
||||
https://github.com/spring-projects/spring-test-data-geode[Spring Test for Apache Geode & Pivotal GemFire] is a new,
|
||||
soon to be released and upcoming project to help developers write both _Unit_ and _Integration Tests_
|
||||
when using either Apache Geode or Pivotal GemFire in a Spring context.
|
||||
https://github.com/spring-projects/spring-test-data-geode[Spring Test for {geode-name}] is a new, soon to be released
|
||||
and upcoming project to help developers write both _Unit_ and _Integration Tests_ when using {geode-name}
|
||||
in a Spring context.
|
||||
|
||||
In fact, the entire {github-url}/tree/master/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure[test suite]
|
||||
in Spring Boot for Apache Geode & Pivotal GemFire is based on this project.
|
||||
in Spring Boot for {geode-name} is based on this project.
|
||||
|
||||
All Spring projects integrating with either Apache Geode or Pivotal GemFire will use this new test framework for all
|
||||
their testing needs, making this new test framework for Apache Geode and Pivotal GemFire a proven and reliable solution
|
||||
for all your Apache Geode/Pivotal GemFire application testing needs when using Spring as well.
|
||||
All Spring projects integrating with either {geode-name} will use this new test framework for all their testing needs,
|
||||
making this new test framework for {geode-name} a proven and reliable solution for all your {geode-name} application
|
||||
testing needs when using Spring as well.
|
||||
|
||||
Later on, this reference guide will include and dedicate an entire chapter on testing.
|
||||
|
||||
[[geode-examples]]
|
||||
=== Examples
|
||||
|
||||
The definitive source of truth on how to best use Spring Boot for Apache Geode & Pivotal GemFire (or Pivotal Cloud Cache
|
||||
(PCC)) is to refer to the <<geode-samples,Samples>>.
|
||||
The definitive source of truth on how to best use Spring Boot for {geode-name} is to refer to the <<geode-samples,Samples>>.
|
||||
|
||||
Refer to the Pivotal Cloud Cache (PCC), https://github.com/pivotal-cf/PCC-Sample-App-PizzaStore[Pizza Store],
|
||||
Spring Boot application for an example of how to use Spring Boot for Pivotal GemFire (SBDG) in a `ClientCache`
|
||||
Spring Boot application for an example of how to use Spring Boot for {gemfire-name} (SBDG) in a `ClientCache`
|
||||
application interfacing with PCC.
|
||||
|
||||
Additionally, you may refer to the https://github.com/jxblum/temperature-service[Temperature Service], Spring Boot
|
||||
application, which implements a Temperature Sensor and Monitoring, Internet of Things (IOT) example. The example uses
|
||||
SBDG to showcase Apache Geode CQ, Function Implementations/Executions and positions Apache Geode as a _caching provider_
|
||||
SBDG to showcase {geode-name} CQ, Function Implementations/Executions and positions {geode-name} as a _caching provider_
|
||||
in Spring's Cache Abstraction. It is a working, sophisticated and complete example, and is highly recommended
|
||||
as a good starting point for real-world use cases.
|
||||
|
||||
You may also refer to the https://github.com/jxblum/contacts-application/tree/master/boot-example[boot-example]
|
||||
from the _Contact Application_ Reference Implementation (RI) for Spring Data for Apache Geode & Pivotal GemFire
|
||||
(SDG) as yet another example.
|
||||
from the _Contact Application_ Reference Implementation (RI) for Spring Data for {geode-name} (SDG)
|
||||
as yet another example.
|
||||
|
||||
[[references]]
|
||||
=== References
|
||||
@@ -596,8 +596,8 @@ from the _Contact Application_ Reference Implementation (RI) for Spring Data for
|
||||
1. Spring Framework {spring-framework-docs}[Reference Guide] | {spring-framework-javadoc}[Javadoc]
|
||||
2. Spring Boot {spring-boot-docs-html}[Reference Guide] | {spring-boot-javadoc}[Javadoc]
|
||||
3. Spring Data Commons {spring-data-commons-docs-html}[Reference Guide] | {spring-data-commons-javadoc}[Javadoc]
|
||||
4. Spring Data for Apache Geode {spring-data-geode-docs-html}[Reference Guide] | {spring-data-geode-javadoc}[Javadoc]
|
||||
5. Spring Session for Apache Geode {spring-session-data-gemfire-docs}[Reference Guide] | {spring-session-data-gemfire-javadoc}[Javadoc]
|
||||
6. Spring Test for Apache Geode {spring-test-data-gemfire-website}[README]
|
||||
7. Apache Geode {apache-geode-docs}[User Guide] | {apache-geode-javadoc}[Javadoc]
|
||||
8. Pivotal GemFire {pivotal-gemfire-docs}[User Guide] | {pivotal-gemfire-javadoc}[Javadoc]
|
||||
4. Spring Data for {geode-name} {spring-data-geode-docs-html}[Reference Guide] | {spring-data-geode-javadoc}[Javadoc]
|
||||
5. Spring Session for {geode-name} {spring-session-data-gemfire-docs}[Reference Guide] | {spring-session-data-gemfire-javadoc}[Javadoc]
|
||||
6. Spring Test for {geode-name} {spring-test-data-gemfire-website}[README]
|
||||
7. {geode-name} {apache-geode-docs}[User Guide] | {apache-geode-javadoc}[Javadoc]
|
||||
8. {gemfire-name} {pivotal-gemfire-docs}[User Guide] | {pivotal-gemfire-javadoc}[Javadoc]
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
[[geode-clientcache-applications]]
|
||||
== Building ClientCache Applications
|
||||
|
||||
The first, opinionated option provided to you by Spring Boot for Apache Geode & Pivotal GemFire (SBDG) out-of-the-box is
|
||||
a {apache-geode-javadoc}/org/apache/geode/cache/client/ClientCache.html[ClientCache] instance, simply by declaring
|
||||
either Spring Boot for Apache Geode or Spring Boot for Pivotal GemFire on your application classpath.
|
||||
The first, opinionated option provided to you by Spring Boot for Apache Geode (SBDG) out-of-the-box is a
|
||||
{apache-geode-javadoc}/org/apache/geode/cache/client/ClientCache.html[ClientCache] instance, simply by declaring
|
||||
Spring Boot for Apache Geode (SBDG) on your application classpath.
|
||||
|
||||
It is assumed that most application developers using Spring Boot to build applications backed by either Apache Geode
|
||||
or Pivotal GemFire will be building cache client applications deployed in an Apache Geode or Pivotal GemFire
|
||||
It is assumed that most application developers using Spring Boot to build applications backed by Apache Geode will be
|
||||
building cache client applications deployed in an Apache Geode
|
||||
{apache-geode-docs}/topologies_and_comm/cs_configuration/chapter_overview.html[Client/Server topology].
|
||||
A client/server topology is the most common and traditional architecture employed by enterprise applications.
|
||||
|
||||
For example, you can begin building a Spring Boot, Apache Geode or Pivotal GemFire, `ClientCache` application
|
||||
with either the `spring-geode-starter` or `spring-gemfire-starter` on your application's classpath:
|
||||
For example, you can begin building a Spring Boot, Apache Geode `ClientCache` application with either
|
||||
the `spring-geode-starter` or `spring-gemfire-starter` on your application's classpath:
|
||||
|
||||
.Spring Boot for Apache Geode on the application classpath
|
||||
[source,xml]
|
||||
@@ -37,12 +37,12 @@ public class SpringBootApacheGeodeClientCacheApplication {
|
||||
}
|
||||
----
|
||||
|
||||
Your application now has a `ClientCache` instance, which is able to connect to an Apache Geode or Pivotal GemFire server
|
||||
running on `localhost`, listening on the default `CacheServer` port, `40404`.
|
||||
Your application now has a `ClientCache` instance, which is able to connect to an Apache Geode server running on
|
||||
`localhost`, listening on the default `CacheServer` port, `40404`.
|
||||
|
||||
By default, an Apache Geode or Pivotal GemFire server (i.e. `CacheServer`) must be running in order to use
|
||||
the `ClientCache` instance. However, it is perfectly valid to create a `ClientCache` instance and perform
|
||||
data access operations using `LOCAL` Regions. This is very useful during development.
|
||||
By default, an Apache Geode server (i.e. `CacheServer`) must be running in order to use the `ClientCache` instance.
|
||||
However, it is perfectly valid to create a `ClientCache` instance and perform data access operations using `LOCAL`
|
||||
Regions. This is very useful during development.
|
||||
|
||||
TIP: To develop with `LOCAL` Regions, you only need to define your cache Regions with the
|
||||
{apache-geode-javadoc}/org/apache/geode/cache/client/ClientRegionShortcut.html#LOCAL[`ClientRegionShortcut.LOCAL`]
|
||||
@@ -53,7 +53,7 @@ environment, you simply change the data management policy of the client Region f
|
||||
or even a `CACHING_PROXY`, data management policy which will cause the data to be sent/received to and from 1 or more
|
||||
servers, respectively.
|
||||
|
||||
TIP: Compare and contrast the above configuration with Spring Data for Apache Geode/Pivotal GemFire's
|
||||
TIP: Compare and contrast the above configuration with Spring Data for Apache Geode's
|
||||
{spring-data-geode-docs-html}/#bootstrap-annotation-config-geode-applications[approach].
|
||||
|
||||
It is uncommon to ever need a direct reference to the `ClientCache` instance provided by SBDG injected into your
|
||||
@@ -103,12 +103,12 @@ It is the 2nd part, "_get out of the way quickly as requirements start to diverg
|
||||
that we refer to here.
|
||||
|
||||
If your application requirements demand you use Spring Boot to configure and bootstrap an embedded, peer `Cache`
|
||||
Apache Geode or Pivotal GemFire application, then simply declare your intention with either SDG's
|
||||
Apache Geode application, then simply declare your intention with either SDG's
|
||||
{spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/PeerCacheApplication.html[`@PeerCacheApplication`] annotation,
|
||||
or alternatively, if you need to enable connections from `ClientCache` apps as well, use the SDG
|
||||
{spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/CacheServerApplication.html[`@CacheServerApplication`] annotation:
|
||||
|
||||
.Spring Boot, Apache Geode/Pivotal GemFire CacheServer Application
|
||||
.Spring Boot, Apache Geode CacheServer Application
|
||||
[source,java]
|
||||
----
|
||||
@SpringBootApplication
|
||||
@@ -121,8 +121,8 @@ public class SpringBootApacheGeodeCacheServerApplication {
|
||||
}
|
||||
----
|
||||
|
||||
TIP: An Apache Geode/Pivotal GemFire "server" is not necessarily a "`CacheServer`" capable of serving cache clients.
|
||||
It is merely a peer member node in a GemFire/Geode cluster (a.k.a. distributed system) that stores and manages data.
|
||||
TIP: An Apache Geode "server" is not necessarily a "`CacheServer`" capable of serving cache clients. It is merely a
|
||||
peer member node in a GemFire/Geode cluster (a.k.a. distributed system) that stores and manages data.
|
||||
|
||||
By explicitly declaring the `@CacheServerApplication` annotation, you are telling Spring Boot that you do not want
|
||||
the default, `ClientCache` instance, but rather an embedded, peer `Cache` instance with a `CacheServer` component,
|
||||
@@ -133,7 +133,7 @@ to "locate" servers in a cluster, as well as an embedded _Manager_, which allows
|
||||
to be managed and monitored using {apache-geode-docs}/tools_modules/gfsh/chapter_overview.html[_Gfsh_], GemFire/Geode's
|
||||
shell tool:
|
||||
|
||||
.Spring Boot, Apache Geode/Pivotal GemFire CacheServer Application with _Locator_ and _Manager_ services enabled
|
||||
.Spring Boot, Apache Geode `CacheServer` Application with _Locator_ and _Manager_ services enabled
|
||||
[source,java]
|
||||
----
|
||||
@SpringBootApplication
|
||||
@@ -197,9 +197,9 @@ Client Connections : 0
|
||||
----
|
||||
|
||||
You can even start additional servers in _Gfsh_, which will connect to your Spring Boot configured and bootstrapped
|
||||
Apache Geode or Pivotal GemFire `CacheServer` application. These additional servers started in _Gfsh_ know about
|
||||
the Spring Boot, GemFire/Geode server because of the embedded _Locator_ service, which is running on `localhost`,
|
||||
listening on the default _Locator_ port, `10334`:
|
||||
Apache Geode `CacheServer` application. These additional servers started in _Gfsh_ know about the Spring Boot,
|
||||
Apache Geode server because of the embedded _Locator_ service, which is running on `localhost`, listening on
|
||||
the default _Locator_ port, `10334`:
|
||||
|
||||
[source,text]
|
||||
----
|
||||
@@ -268,7 +268,7 @@ GfshServer | 10.0.0.121(GfshServer:30270)<v1>:1025
|
||||
|
||||
Then, modify the `SpringBootApacheGeodeCacheServerApplication` class to connect to the existing cluster, like so:
|
||||
|
||||
.Spring Boot, Apache Geode/Pivotal GemFire CacheServer Application with _Locator_ and _Manager_ services enabled
|
||||
.Spring Boot, Apache Geode `CacheServer` Application with _Locator_ and _Manager_ services enabled
|
||||
[source,java]
|
||||
----
|
||||
@SpringBootApplication
|
||||
@@ -317,8 +317,8 @@ Running : true
|
||||
Client Connections : 0
|
||||
----
|
||||
|
||||
In both scenarios, the Spring Boot configured and bootstrapped Apache Geode (or Pivotal GemFire) server
|
||||
and the _Gfsh_ _Locator_ and _Server_ formed a cluster.
|
||||
In both scenarios, the Spring Boot configured and bootstrapped Apache Geode server and the _Gfsh_ _Locator_ and _Server_
|
||||
formed a cluster.
|
||||
|
||||
While you can use either approach and Spring does not care, it is far more convenient to use Spring Boot and your IDE
|
||||
to form a small cluster while developing. By leveraging Spring profiles, it is far simpler and much faster to
|
||||
@@ -342,10 +342,10 @@ TIP: See the Appendix, <<geode-cluster-configuration-bootstrapping>> for more de
|
||||
In addition to `ClientCache`, `CacheServer` and peer `Cache` applications, SDG, and by extension SBDG, now supports
|
||||
Locator-based, Spring Boot applications.
|
||||
|
||||
An Apache Geode or Pivotal GemFire Locator is a location-based service, or alternatively and more typically,
|
||||
a standalone process enabling clients to "locate" a cluster of Apache Geode/Pivotal GemFire servers to manage data.
|
||||
Many cache clients can connect to the same cluster in order to share data. Running multiple clients is common in a
|
||||
Microservices architecture where you need to scale-up the number of app instances to satisfy the demand.
|
||||
An Apache Geode Locator is a location-based service, or alternatively and more typically, a standalone process enabling
|
||||
clients to "locate" a cluster of Apache Geode servers to manage data. Many cache clients can connect to the same cluster
|
||||
in order to share data. Running multiple clients is common in a Microservices architecture where you need to scale-up
|
||||
the number of app instances to satisfy the demand.
|
||||
|
||||
A Locator is also used by joining members of an existing cluster to scale-out and increase capacity of the logically
|
||||
pooled system resources (i.e. Memory, CPU and Disk). A Locator maintains metadata that is sent to the clients to
|
||||
@@ -398,8 +398,8 @@ class SpringBootApacheGeodeLocatorApplication {
|
||||
Instead of using the `@EnableLocator` annotation, you now use the `@LocatorApplication` annotation.
|
||||
|
||||
The `@LocatorApplication` annotation works in the same way as the `@PeerCacheApplication` and `@CacheServerApplication`
|
||||
annotations, bootstrapping a Apache Geode or Pivotal GemFire process, overriding the default `ClientCache` instance
|
||||
provided by SBDG out-of-the-box.
|
||||
annotations, bootstrapping a Apache Geode process, overriding the default `ClientCache` instance provided by SBDG
|
||||
out-of-the-box.
|
||||
|
||||
NOTE: If your `@SpringBootApplication` class is annotated with `@LocatorApplication`, then it can only be a `Locator`
|
||||
and not a `ClientCache`, `CacheServer` or peer `Cache` application. If you need the application to function as a
|
||||
@@ -420,14 +420,14 @@ include::{docs-src-dir}/org/springframework/geode/docs/example/app/locator/Sprin
|
||||
|
||||
We also need to vary the configuration for each Locator app instance.
|
||||
|
||||
Apache Geode and Pivotal GemFire requires each peer member in the cluster to be uniquely named. We can set the name
|
||||
of the Locator by using the `spring.data.gemfire.locator.name` SDG property set as a JVM System Property in your IDE's
|
||||
Run Configuration Profile for the application main class like so: `-Dspring.data.gemfire.locator.name=SpringLocatorOne`.
|
||||
We name the second Locator app instance, "_SpringLocatorTwo_".
|
||||
Apache Geode requires each peer member in the cluster to be uniquely named. We can set the name of the Locator by using
|
||||
the `spring.data.gemfire.locator.name` SDG property set as a JVM System Property in your IDE's Run Configuration Profile
|
||||
for the application main class like so: `-Dspring.data.gemfire.locator.name=SpringLocatorOne`. We name the second
|
||||
Locator app instance, "_SpringLocatorTwo_".
|
||||
|
||||
Additionally, we must vary the port numbers that the Locators use to listen for connections. By default,
|
||||
an Apache Geode or Pivotal GemFire Locator listens on port `10334`. We can set the Locator port using the
|
||||
`spring.data.gemfire.locator.port` SDG property.
|
||||
an Apache Geode Locator listens on port `10334`. We can set the Locator port using
|
||||
the `spring.data.gemfire.locator.port` SDG property.
|
||||
|
||||
For our first Locator app instance (i.e. "_SpringLocatorOne_"), we also enable the "_manager_" Profile so that
|
||||
we can connect to the Locator using _Gfsh_.
|
||||
@@ -616,17 +616,17 @@ GfshServer | 10.99.199.24(GfshServer:30295)<v4>:41004
|
||||
----
|
||||
|
||||
You must be careful to vary the ports and name your peer members appropriately. With Spring, and Spring Boot
|
||||
for Apache Geode and Pivotal GemFire (SBDG) in particular, it really is that easy!
|
||||
for Apache Geode (SBDG) in particular, it really is that easy!
|
||||
|
||||
[[geode-manager-applications]]
|
||||
=== Building Manager Applications
|
||||
|
||||
As discussed in the previous sections above, it is possible to enable a Spring Boot configured and bootstrapped
|
||||
Apache Geode or Pivotal GemFire peer member node in the cluster to function as a _Manager_.
|
||||
Apache Geode peer member node in the cluster to function as a _Manager_.
|
||||
|
||||
An Apache Geode or Pivotal GemFire _Manager_ is a peer member node in the cluster running the Management Service,
|
||||
allowing the cluster to be managed and monitored using JMX based tools, like _Gfsh_, _JConsole_ or _JVisualVM_,
|
||||
for instance. Any tool that uses the JMX API can connect to and manage the GemFire/Geode cluster for whatever purpose.
|
||||
An Apache Geode _Manager_ is a peer member node in the cluster running the Management Service, allowing the cluster
|
||||
to be managed and monitored using JMX based tools, like _Gfsh_, _JConsole_ or _JVisualVM_, for instance. Any tool
|
||||
that uses the JMX API can connect to and manage the GemFire/Geode cluster for whatever purpose.
|
||||
|
||||
The cluster may have more than 1 _Manager_ for redundancy. Only server-side, peer member nodes in the cluster
|
||||
may function as a _Manager_. Therefore, a `ClientCache` application cannot be a _Manager_.
|
||||
@@ -683,8 +683,8 @@ TIP: See the `@EnableManager` annotation
|
||||
for additional configuration options.
|
||||
|
||||
As of Apache Geode 1.11.0, you must now include additional Geode dependencies on your Spring Boot application classpath
|
||||
to make your application a proper Apache Geode/Pivotal GemFire _Manager_ in the cluster, particularly if you are also
|
||||
enabling the embedded HTTP service in the _Manager_.
|
||||
to make your application a proper Apache Geode _Manager_ in the cluster, particularly if you are also enabling
|
||||
the embedded HTTP service in the _Manager_.
|
||||
|
||||
The required dependencies are:
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ In most cases, when you "_push_" (i.e. "_deploy_") your Spring Boot applications
|
||||
you will bind your app to 1 or more instances of the Pivotal Cloud Cache (PCC) service.
|
||||
|
||||
In a nutshell, {pivotal-cloudcache-website}[Pivotal Cloud Cache] is a managed version of
|
||||
{pivotal-gemfire-website}[Pivotal GemFire] running in {pivotal-cloudfoundry-website}[Pivotal CloudFoundry].
|
||||
{pivotal-gemfire-website}[VMware Tanzu GemFire] running in {pivotal-cloudfoundry-website}[Pivotal CloudFoundry].
|
||||
When running in or across cloud environments (e.g. AWS, Azure, GCP or PWS), PCC with PCF offers several advantages
|
||||
over trying to run and manage your own standalone Apache Geode or Pivotal GemFir clusters. It handles many of
|
||||
the infrastructure-related, operational concerns so you do not have to.
|
||||
@@ -34,12 +34,12 @@ the `@EnableClusterConfiguration` annotation:
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableClusterConfiguration(useHttp = true)
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
With `@EnableClusterConfiguration`, Region and OQL Index configuration metadata defined on the client can be sent to
|
||||
servers in the PCC cluster. Apache Geode and Pivotal GemFire requires matching Regions by name on both the client
|
||||
and servers in order for clients to send and receive data to and from the cluster.
|
||||
servers in the PCC cluster. Apache Geode requires matching Regions by name on both the client and servers in order for
|
||||
clients to send and receive data to and from the cluster.
|
||||
|
||||
For example, when you declare the Region where an application entity will be persisted using the `@Region` mapping
|
||||
annotation and additionally declare the `@EnableEntityDefinedRegions` annotation on the main `@SpringBootApplication`
|
||||
@@ -82,7 +82,6 @@ Configuration metadata for the PCC service instance might appear as follows:
|
||||
"password": "*****",
|
||||
"roles": [ "developer" ],
|
||||
"username": "developer_user"
|
||||
},
|
||||
}, {
|
||||
"password": "*****",
|
||||
"roles": [ "read-only-user" ],
|
||||
@@ -97,7 +96,6 @@ Configuration metadata for the PCC service instance might appear as follows:
|
||||
}
|
||||
}
|
||||
},
|
||||
...
|
||||
"name": "jblum-pcc",
|
||||
"plan": "small",
|
||||
"tags": [ "gemfire", "cloudcache", "database", "pivotal" ]
|
||||
@@ -122,9 +120,9 @@ TIP: The `spring.data.gemfire.security.username` property corresponds directly t
|
||||
See the {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableSecurity.html#securityUsername--[Javadoc]
|
||||
for more details.
|
||||
|
||||
The `spring.data.gemfire.security.username` property is the same property used by Spring Data for Apache Geode
|
||||
and Pivotal GemFire (SDG) to configure the runtime user of your Spring Data application when connecting to either
|
||||
an externally managed Apache Geode or Pivotal GemFire cluster.
|
||||
The `spring.data.gemfire.security.username` property is the same property used by Spring Data for Apache Geode (SDG)
|
||||
to configure the runtime user of your Spring Data application when connecting to either an externally managed
|
||||
Apache Geode cluster.
|
||||
|
||||
In this case, SBDG simply uses the configured username to lookup the authentication credentials of the user to set
|
||||
the username and password used by the Spring Boot, `ClientCache` app when connecting to PCC while running in PCF.
|
||||
@@ -164,9 +162,9 @@ will not be extracted from the environment.
|
||||
It is possible to provision multiple instances of the Pivotal Cloud Cache service in your Pivotal CloudFoundry
|
||||
environment. You can then bind multiple PCC service instances to your Spring Boot app.
|
||||
|
||||
However, Spring Boot for Apache Geode & Pivotal GemFire (SBDG) will only auto-configure 1 PCC service instance for your
|
||||
Spring Boot application. This does not mean it is not possible to use multiple PCC service instances with your
|
||||
Spring Boot app, just that SBDG only "_auto-configures_" 1 service instance for you.
|
||||
However, Spring Boot for Apache Geode (SBDG) will only auto-configure 1 PCC service instance for your Spring Boot
|
||||
application. This does not mean it is not possible to use multiple PCC service instances with your Spring Boot app,
|
||||
just that SBDG only "_auto-configures_" 1 service instance for you.
|
||||
|
||||
You must select which PCC service instance your Spring Boot app will auto-configure for you automatically when you have
|
||||
multiple instances and want to target a specific PCC service instance to use.
|
||||
@@ -211,7 +209,7 @@ The configuration would be similar to the following:
|
||||
@EnablePool(name = "PccN")
|
||||
})
|
||||
class PccConfiguration {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -267,11 +265,10 @@ as discussed <<cloudfoundry-cloudcache-multiinstance-using,above>>.
|
||||
=== Hybrid Pivotal CloudFoundry & Apache Geode Spring Boot Applications
|
||||
|
||||
Sometimes, it is desirable to deploy (i.e. "_push_") and run your Spring Boot applications in Pivotal CloudFoundry,
|
||||
but still connect your Spring Boot applications to an externally managed, standalone Apache Geode or Pivotal GemFire
|
||||
cluster.
|
||||
but still connect your Spring Boot applications to an externally managed, standalone Apache Geode cluster.
|
||||
|
||||
Spring Boot for Apache Geode & Pivotal GemFire (SBDG) makes this a non-event and honors its "_little to no code
|
||||
or configuration changes necessary_" goal, regardless of your runtime choice, "_it should just work!_"
|
||||
Spring Boot for Apache Geode (SBDG) makes this a non-event and honors its "_little to no code or configuration changes
|
||||
necessary_" goal, regardless of your runtime choice, "_it should just work!_"
|
||||
|
||||
To help guide you through this process, we will cover the following topics:
|
||||
|
||||
@@ -294,7 +291,7 @@ can be bound and used by your Spring Boot application to accomplish its tasks.
|
||||
|
||||
However, PCF Dev lacks the Pivotal Cloud Cache (PCC) service that is available in PCF. This is actually ideal for
|
||||
this little exercise since we are trying to build and run Spring Boot applications in a PCF environment
|
||||
but connect to an externally managed, standalone Apache Geode or Pivotal GemFire cluster.
|
||||
but connect to an externally managed, standalone Apache Geode cluster.
|
||||
|
||||
As a prerequisite, you will need to follow the steps outlined in the
|
||||
https://pivotal.io/platform/pcf-tutorials/getting-started-with-pivotal-cloud-foundry-dev/introduction[tutorial]
|
||||
@@ -486,8 +483,8 @@ Now that we have PCF Dev and a small Apache Geode cluster up and running, it is
|
||||
to the external, standalone Apache Geode cluster that we started in <<cloudfoundry-geode-cluster,step 2>>.
|
||||
|
||||
As mentioned, PCF Dev offers the MySQL, Redis and RabbitMQ services out-of-the-box. However, to use Apache Geode
|
||||
(or Pivotal GemFire) in the same capacity as you would Pivotal Cloud Cache when running in a production-grade,
|
||||
PCF environment, you need to create a User-Provided Service for the standalone Apache Geode cluster.
|
||||
in the same capacity as you would Pivotal Cloud Cache when running in a production-grade, PCF environment, you need
|
||||
to create a User-Provided Service for the standalone Apache Geode cluster.
|
||||
|
||||
To do so, execute the following `cf` CLI command:
|
||||
|
||||
@@ -757,8 +754,8 @@ Rows : 1
|
||||
|
||||
There you have it!
|
||||
|
||||
The ability to deploy Spring Boot, Apache Geode or Pivotal GemFire `ClientCache` applications to Pivotal CloudFoundry,
|
||||
yet connect your app to a externally managed, standalone Apache Geode or Pivotal GemFire cluster.
|
||||
The ability to deploy Spring Boot, Apache Geode `ClientCache` applications to Pivotal CloudFoundry, yet connect your app
|
||||
to a externally managed, standalone Apache Geode cluster.
|
||||
|
||||
Indeed, this is will be a useful arrangement and stepping stone for many users as they begin their journey towards
|
||||
a Cloud-Native platform like Pivotal CloudFoundry (PCF) and using services like Pivotal Cloud Cache (PCC).
|
||||
|
||||
@@ -1,31 +1,30 @@
|
||||
[[geode-auto-configuration-annotations]]
|
||||
== Auto-configuration vs. Annotation-based configuration
|
||||
|
||||
The question most often asked is, "_What Spring Data for Apache Geode/Pivotal GemFire annotations can I use,
|
||||
or must I use, when developing Apache Geode or Pivotal GemFire applications with Spring Boot?_"
|
||||
The question most often asked is, "_What Spring Data for Apache Geode annotations can I use, or must I use,
|
||||
when developing Apache Geode applications with Spring Boot?_"
|
||||
|
||||
This section will answer this question and more.
|
||||
|
||||
Readers should refer to the complimentary sample, link:guides/boot-configuration.html[Spring Boot Auto-configuration for Apache Geode & Pivotal GemFire],
|
||||
which showcases the _auto-configuration_ provided by Spring Boot for Apache Geode/Pivotal GemFire in action.
|
||||
Readers should refer to the complimentary sample, link:guides/boot-configuration.html[Spring Boot Auto-configuration for Apache Geode],
|
||||
which showcases the _auto-configuration_ provided by Spring Boot for Apache Geode in action.
|
||||
|
||||
[[geode-autoconfiguration-annotations-background]]
|
||||
=== Background
|
||||
|
||||
To help answer this question, we must start by reviewing the complete collection of available
|
||||
Spring Data for Apache Geode/Pivotal GemFire (SDG) annotations. These annotations are provided in the
|
||||
Spring Data for Apache Geode (SDG) annotations. These annotations are provided in the
|
||||
{spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/package-summary.html[org.springframework.data.gemfire.config.annotation]
|
||||
package. Most of the pertinent annotations begin with `@Enable...`, except for the base annotations:
|
||||
`@ClientCacheApplication`, `@PeerCacheApplication` and `@CacheServerApplication`.
|
||||
|
||||
By extension, Spring Boot for Apache Geode/Pivotal GemFire (SBDG) builds on SDG's Annotation-based configuration model
|
||||
to implement _auto-configuration_ and apply Spring Boot's core concepts, like "_convention over configuration_",
|
||||
enabling GemFire/Geode applications to be built with Spring Boot reliably, quickly and easily.
|
||||
By extension, Spring Boot for Apache Geode (SBDG) builds on SDG's Annotation-based configuration model to implement
|
||||
_auto-configuration_ and apply Spring Boot's core concepts, like "_convention over configuration_", enabling Apache
|
||||
Geode applications to be built with Spring Boot reliably, quickly and easily.
|
||||
|
||||
SDG provides this Annotation-based configuration model to, first and foremost, give application developers "_choice_"
|
||||
when building Spring applications using either Apache Geode or Pivotal GemFire. SDG makes no assumptions about what
|
||||
application developers are trying to do and fails fast anytime the configuration is ambiguous, giving users immediate
|
||||
feedback.
|
||||
when building Spring applications using Apache Geode. SDG makes no assumptions about what application developers are
|
||||
trying to do and fails fast anytime the configuration is ambiguous, giving users immediate feedback.
|
||||
|
||||
Second, SDG's Annotations were meant to get application developers up and running quickly and reliably with ease. SDG
|
||||
accomplishes this by applying sensible defaults so application developers do not need to know, or even have to learn,
|
||||
@@ -84,8 +83,8 @@ By default, SBDG provides you with a `ClientCache` instance. Technically, SBDG
|
||||
an auto-configuration class with `@ClientCacheApplication`, internally.
|
||||
|
||||
It is by convention that we assume most application developers' will be developing Spring Boot applications
|
||||
using Apache Geode or Pivotal GemFire as "client" applications in GemFire/Geode's client/server topology. This is
|
||||
especially true as users migrate their applications to a managed environment, such as Pivotal CloudFoundry (PCF)
|
||||
using Apache Geode as "client" applications in GemFire/Geode's client/server topology. This is especially true
|
||||
as users migrate their applications to a managed environment, such as Pivotal CloudFoundry (PCF)
|
||||
using Pivotal Cloud Cache (PCC).
|
||||
|
||||
Still, users are free to "override" the default settings and declare their Spring applications to be actual peer `Cache`
|
||||
@@ -97,7 +96,7 @@ For example:
|
||||
----
|
||||
@SpringBootApplication
|
||||
@CacheServerApplication
|
||||
class MySpringBootPeerCacheServerApplication { ... }
|
||||
class MySpringBootPeerCacheServerApplication { }
|
||||
----
|
||||
|
||||
By declaring the `@CacheServerApplication` annotation, you effectively override the SBDG default. Therefore, SBDG
|
||||
@@ -220,7 +219,7 @@ You can do that by defining each Region explicitly, or more conveniently, you ca
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableCachingDefinedRegions
|
||||
class Application { ... }
|
||||
class Application { }
|
||||
----
|
||||
|
||||
`@EnableCachingDefinedRegions` is optional, provided for convenience, and complimentary to caching when used
|
||||
@@ -275,7 +274,7 @@ class GemFireFunctions {
|
||||
|
||||
@GemfireFunction
|
||||
Object exampleFunction(Object arg) {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
@@ -36,11 +36,11 @@ Now, that we explained the motivation behind this chapter, let's outline what we
|
||||
* Refer you to the SDG _Annotations_ covered by SBDG's _Auto-configuration_
|
||||
* List all SDG _Annotations_ not covered by SBDG's _Auto-configuration_
|
||||
* Cover the SBDG, SSDG and SDG _Annotations_ that must be declared explicitly and that provide the most value and productivity
|
||||
when getting started using either Apache Geode or Pivotal GemFire in Spring [Boot] applications.
|
||||
when getting started using Apache Geode in Spring [Boot] applications.
|
||||
|
||||
NOTE: SDG refers to {spring-data-geode-website}[Spring Data for Apache Geode & Pivotal GemFire]. SSDG refers to
|
||||
{spring-session-data-gemfire-website}[Spring Session for Apache Geode & Pivotal GemFire] and SBDG refers to
|
||||
_Spring Boot for Apache Geode & Pivotal GemFire_, this project.
|
||||
NOTE: SDG refers to {spring-data-geode-website}[Spring Data for Apache Geode]. SSDG refers to
|
||||
{spring-session-data-gemfire-website}[Spring Session for Apache Geode] and SBDG refers to
|
||||
_Spring Boot for Apache Geode_, this project.
|
||||
|
||||
TIP: The list of SDG _Annotations_ covered by SBDG's _Auto-configuration_ is discussed in detail in the <<appendix, Appendix>>,
|
||||
in the section, <<geode-auto-configuration-annotations,Auto-configuration vs. Annotation-based configuration>>.
|
||||
@@ -134,7 +134,7 @@ Still, all of these _Annotations_ are available for the application developer to
|
||||
=== Productivity Annotations
|
||||
|
||||
This section calls out the _Annotations_ we believe to be most beneficial for your application development purposes
|
||||
when using either Apache Geode or Pivotal GemFire in Spring Boot applications.
|
||||
when using Apache Geode in Spring Boot applications.
|
||||
|
||||
[[geode-configuration-declarative-annotations-productivity-enableclusteraware]]
|
||||
==== `@EnableClusterAware` (SBDG)
|
||||
@@ -148,14 +148,14 @@ When you annotate your main `@SpringBootApplication` class with `@EnableClusterA
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableClusterAware
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
Your Spring Boot, Apache Geode `ClientCache` application is able to seamlessly switch between client/server
|
||||
and local-only topologies with no code or configuration changes.
|
||||
|
||||
When a cluster of Apache Geode or Pivotal GemFire servers is detected, the client application will send and receive data
|
||||
to and from the cluster. If a cluster is not available, then the client automatically switches to storing data locally
|
||||
When a cluster of Apache Geode servers is detected, the client application will send and receive data to and from
|
||||
the cluster. If a cluster is not available, then the client automatically switches to storing data locally
|
||||
on the client using `LOCAL` Regions.
|
||||
|
||||
Additionally, the `@EnableClusterAware` annotation is meta-annotated with SDG's
|
||||
@@ -228,9 +228,9 @@ For example, given:
|
||||
@Service
|
||||
class CustomerService {
|
||||
|
||||
@Cacheable("CustomersByAccountNumber" key="#account.number")
|
||||
@Cacheable(cacheName = "CustomersByAccountNumber", key="#account.number")
|
||||
Customer findBy(Account account) {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
@@ -242,7 +242,7 @@ When your main `@SpringBootApplication` class is annotated with `@EnableCachingD
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableCachingDefineRegions
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
Then, SBDG would create a client `PROXY` Region (or `PARTITION_REGION` if your application were a peer member of the
|
||||
@@ -276,7 +276,6 @@ class Customer {
|
||||
@Indexed
|
||||
private String name;
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -290,7 +289,7 @@ the main `@SpringBootApplication` class is annotated with `@EnableEntityDefinedR
|
||||
@SpringBootApplication
|
||||
@EnableEntityDefinedRegions(basePackageClasses = Customer.class,
|
||||
clientRegionShortcut = ClientRegionShortcut.CACHING_PROXY)
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
Like the `@EnableCachingDefinedRegions` annotation, you can set the client and server Region data management policy
|
||||
@@ -339,7 +338,7 @@ Then, you could configure the `@EnableEntityDefinedRegions` as follows:
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableEntityDefinedRegions(basePackageClasses = { NonEntity.class, Account.class } )
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
If `Customer`, `Address`, `PhoneNumber` and `Account` were all entity classes properly annotated with `@Region`, then
|
||||
@@ -365,7 +364,7 @@ This is as simple as annotating your main `@SpringBootApplication` class with `@
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableClusterDefinedRegions
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
Every Region that exists on the cluster of servers will have a corresponding `PROXY` Region defined and created on the
|
||||
@@ -389,8 +388,9 @@ class SomeApplicationComponent {
|
||||
|
||||
this.serverRegion.put(1, entity);
|
||||
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
Of course, SBDG _auto-configures_ a `GemfireTemplate` for the "_ServerRegion_" Region (as described <<geode-configuration-declarative-auto-configuration-regiontemplates,here>>),
|
||||
@@ -413,8 +413,9 @@ class SomeApplicationComponent {
|
||||
|
||||
this.serverRegionTemplate.put(1, entity);
|
||||
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
TIP: Refer to the SDG Reference Guide on {spring-data-geode-docs-html}/#bootstrap-annotation-config-region-cluster-defined[Configuring Cluster-defined Regions]
|
||||
@@ -449,7 +450,6 @@ class Customer {
|
||||
@Indexed
|
||||
private String name;
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -461,14 +461,14 @@ As a result, when our main `@SpringBootApplication` class is annotated with `@En
|
||||
@SpringBootApplication
|
||||
@EnableEntityDefinedRegions(basePackageClasses = Customer.class)
|
||||
@EnableIndexing
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
An Apache Geode OQL Index for the `Customer.name` field will be created thereby making OQL Queries on Customers by name
|
||||
use this Index.
|
||||
|
||||
NOTE: Keep in mind that OQL Indexes are not persistent between restarts (i.e. Apache Geode & Pivotal GemFire
|
||||
maintains Indexes in-memory only). An OQL Index is always rebuilt when the node is restarted.
|
||||
NOTE: Keep in mind that OQL Indexes are not persistent between restarts (i.e. Apache Geode maintains Indexes
|
||||
in-memory only). An OQL Index is always rebuilt when the node is restarted.
|
||||
|
||||
When you combine `@EnableIndexing` with either `@EnableClusterConfiguration` or `@EnableClusterAware`, then the Index
|
||||
definitions will be pushed to the server-side Regions where OQL Queries are generally executed.
|
||||
@@ -479,10 +479,10 @@ for more details.
|
||||
[[geode-configuration-declarative-annotations-productivity-enableexpiration]]
|
||||
==== `@EnableExpiration` (SDG)
|
||||
|
||||
It is often useful to define both _Eviction_ and _Expiration_ policies, particularly with a system like Apache Geode
|
||||
or Pivotal GemFire, especially given it primarily keeps data in-memory, on the JVM Heap. As you can imagine your data
|
||||
volume size may far exceed the amount of available JVM Heap memory and/or keeping too much data on the JVM Heap
|
||||
can cause Garbage Collection (GC) issues.
|
||||
It is often useful to define both _Eviction_ and _Expiration_ policies, particularly with a system like Apache Geode,
|
||||
especially given it primarily keeps data in-memory, on the JVM Heap. As you can imagine your data volume size may far
|
||||
exceed the amount of available JVM Heap memory and/or keeping too much data on the JVM Heap can cause Garbage Collection
|
||||
(GC) issues.
|
||||
|
||||
TIP: You can enable off-heap (or main memory usage) capabilities by declaring SDG's `@EnableOffHeap` annotation.
|
||||
Refer to the SDG Reference Guide on {spring-data-geode-docs-html}/#bootstrap-annotation-config-region-off-heap[Configuring Off-Heap Memory]
|
||||
@@ -521,7 +521,6 @@ class Customer {
|
||||
@Indexed
|
||||
private String name;
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -535,7 +534,7 @@ with `@EnableExpiration`:
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableExpiration
|
||||
class SpringBootApacheGeodeApplication { ... }
|
||||
class SpringBootApacheGeodeApplication { }
|
||||
----
|
||||
|
||||
NOTE: Technically, this entity class specific Annotation-based Expiration policy is implemented using Apache Geode's
|
||||
@@ -551,23 +550,22 @@ TIP: Refer to the SDG Reference Guide for more details on
|
||||
_Software Testing_ in general, and _Unit Testing_ in particular, are a very important development tasks to ensure
|
||||
the quality of your Spring Boot applications.
|
||||
|
||||
Apache Geode and Pivotal GemFire can make testing difficult in some cases, especially when tests have to be written as
|
||||
_Integration Tests_ in order to assert the correct behavior. This can be very costly and lengthens the feedback cycle.
|
||||
Fortunately, it is possible to write _Unit Tests_ as well!
|
||||
Apache Geode can make testing difficult in some cases, especially when tests have to be written as _Integration Tests_
|
||||
in order to assert the correct behavior. This can be very costly and lengthens the feedback cycle. Fortunately, it is
|
||||
possible to write _Unit Tests_ as well!
|
||||
|
||||
Spring has your back and once again provides a framework for testing Spring Boot applications using either Apache Geode
|
||||
or Pivotal GemFire. This is where the {spring-test-data-gemfire-website}[Spring Test for Apache Geode & Pivotal GemFire (STDG)] project
|
||||
can help, particularly with _Unit Testing_.
|
||||
Spring has your back and once again provides a framework for testing Spring Boot applications using either Apache Geode.
|
||||
This is where the {spring-test-data-gemfire-website}[Spring Test for Apache Geode(STDG)] project can help, particularly
|
||||
with _Unit Testing_.
|
||||
|
||||
For example, if you do not care what Apache Geode or Pivotal GemFire would actually do in certain cases and only care
|
||||
about the "contract", which is what mocking a collaborator is all about, then you could effectively mock Apache Geode
|
||||
or Pivotal GemFire's objects in order to isolate the "_Subject Under Test_" (SUT) and focus on the interaction(s)
|
||||
or outcomes you expect to happen.
|
||||
For example, if you do not care what Apache Geode would actually do in certain cases and only care about the "contract",
|
||||
which is what mocking a collaborator is all about, then you could effectively mock Apache Geode's objects in order to
|
||||
isolate the "_Subject Under Test_" (SUT) and focus on the interaction(s) or outcomes you expect to happen.
|
||||
|
||||
With STDG, you don't have to change a bit of configuration to enable mocks in the _Unit Tests_ for your Spring Boot
|
||||
applications. You simply only need to annotate the test class with `@EnableGemFireMockObjects`, like so:
|
||||
|
||||
.Using Mock Apache Geode or Pivotal GemFire objects
|
||||
.Using Mock Apache Geode objects
|
||||
[source,java]
|
||||
----
|
||||
@RunWith(SpringRunner.class)
|
||||
@@ -576,7 +574,7 @@ class MyApplicationTestClass {
|
||||
|
||||
@Test
|
||||
public void someTestCase() {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@@ -588,8 +586,8 @@ class MyApplicationTestClass {
|
||||
|
||||
Your Spring Boot configuration of Apache Geode will return mock objects for all Apache Geode objects, such as Regions.
|
||||
|
||||
Mocking Apache Geode or Pivotal GemFire objects even works for GemFire/Geode objects created from the productivity
|
||||
annotations discussed in the previous sections above.
|
||||
Mocking Apache Geode objects even works for GemFire/Geode objects created from the productivity annotations discussed in
|
||||
the previous sections above.
|
||||
|
||||
For example, given the following Spring Boot, Apache Geode `ClientCache` application class:
|
||||
|
||||
@@ -598,14 +596,14 @@ For example, given the following Spring Boot, Apache Geode `ClientCache` applica
|
||||
----
|
||||
@SpringBootApplication
|
||||
@EnableEntityDefinedRegions(basePackageClasses = Customer.class)
|
||||
class SpringBootApacheGeodeClientCacheApplication { ... }
|
||||
class SpringBootApacheGeodeClientCacheApplication { }
|
||||
----
|
||||
|
||||
The "_Customers_" Region defined by the `Customer` entity class and created by the `@EnableEntityDefinedRegions`
|
||||
annotation would be a "mock" Region and not an actual Region. You can still inject the Region in your test as before
|
||||
and assert interactions on the Region based on your application workflows:
|
||||
|
||||
.Using Mock Apache Geode or Pivotal GemFire objects
|
||||
.Using Mock Apache Geode objects
|
||||
[source,java]
|
||||
----
|
||||
@RunWith(SpringRunner.class)
|
||||
@@ -624,10 +622,10 @@ class MyApplicationTestClass {
|
||||
|
||||
assertThat(this.customers).containsValue(jonDoe);
|
||||
|
||||
...
|
||||
// ...
|
||||
}
|
||||
|
||||
...
|
||||
// ...
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
== Externalized Configuration
|
||||
|
||||
Like Spring Boot itself (see {spring-boot-docs-html}/boot-features-external-config.html[here]),
|
||||
Spring Boot for Apache Geode and Pivotal GemFire (SBDG) supports externalized configuration.
|
||||
Spring Boot for Apache Geode (SBDG) supports externalized configuration.
|
||||
|
||||
By externalized configuration, we mean configuration metadata stored in a Spring Boot
|
||||
{spring-boot-docs-html}/boot-features-external-config.html#boot-features-external-config-application-property-files[`application.properties` file],
|
||||
@@ -15,14 +15,13 @@ in properties, {spring-boot-docs-html}/boot-features-external-config.html#boot-f
|
||||
properties, and so on. What we are particularly interested in, in this section, is
|
||||
{spring-boot-docs-html}/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties[type-safety].
|
||||
|
||||
Like Spring Boot, Spring Boot for Apache Geode & Pivotal GemFire provides a hierarchy of classes used to capture
|
||||
configuration for several Apache Geode or Pivotal GemFire features in an associated `@ConfigurationProperties`
|
||||
annotated class. Again, the configuration metadata is specified as well-known, documented properties in 1 or more
|
||||
Spring Boot `application.properties` files.
|
||||
Like Spring Boot, Spring Boot for Apache Geode provides a hierarchy of classes used to capture configuration for several
|
||||
Apache Geode features in an associated `@ConfigurationProperties` annotated class. Again, the configuration metadata is
|
||||
specified as well-known, documented properties in 1 or more Spring Boot `application.properties` files.
|
||||
|
||||
For instance, I may have configured my Spring Boot, `ClientCache` application as follows:
|
||||
|
||||
.Spring Boot `application.properties` containing Spring Data properties for Apache Geode / Pivotal GemFire
|
||||
.Spring Boot `application.properties` containing Spring Data properties for Apache Geode
|
||||
[source,properties]
|
||||
----
|
||||
# Spring Boot application.properties used to configure Apache Geode
|
||||
@@ -84,14 +83,12 @@ class MyApplicationComponent {
|
||||
|
||||
// do something with `copyOnRead`
|
||||
}
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
Given a handle to {spring-boot-data-geode-javadoc}/org/springframework/geode/boot/autoconfigure/configuration/GemFireProperties.html[`GemFireProperties`],
|
||||
you can access any of the configuration properties used to configure either Apache Geode or Pivotal GemFire in
|
||||
a Spring context. You simply only need to autowire an instance of `GemFireProperties` into your application component.
|
||||
you can access any of the configuration properties used to configure Apache Geode in a Spring context. You simply only
|
||||
need to autowire an instance of `GemFireProperties` into your application component.
|
||||
|
||||
A complete reference to the SBDG provided `@ConfigurationProperties` classes and supporting classes is available
|
||||
{spring-boot-data-geode-javadoc}/org/springframework/geode/boot/autoconfigure/configuration/package-frame.html[here].
|
||||
@@ -99,8 +96,8 @@ A complete reference to the SBDG provided `@ConfigurationProperties` classes and
|
||||
[[geode-configuration-externalized-session]]
|
||||
=== Externalized Configuration of Spring Session
|
||||
|
||||
The same capability applies to accessing the externalized configuration of Spring Session when using either
|
||||
Apache Geode or Pivotal GemFire as your (HTTP) Session state caching provider.
|
||||
The same capability applies to accessing the externalized configuration of Spring Session when using Apache Geode
|
||||
as your (HTTP) Session state caching provider.
|
||||
|
||||
In this case, you simply only need to acquire a reference to an instance of the
|
||||
{spring-boot-data-geode-javadoc}/org/springframework/geode/boot/autoconfigure/configuration/SpringSessionProperties.html[`SpringSessionProperties`]
|
||||
@@ -135,7 +132,5 @@ class MyApplicationComponent {
|
||||
|
||||
// do something with `sessionRegionName`
|
||||
}
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
== Configuration Metadata Reference
|
||||
|
||||
The following 2 reference sections cover documented and well-known properties recognized and processed by
|
||||
_Spring Data for Apache Geode/Pivotal GemFire_ (SDG) as well as _Spring Session for Apache Geode/Pivotal GemFire_ (SSDG).
|
||||
_Spring Data for Apache Geode/_ (SDG) as well as _Spring Session for Apache Geode_ (SSDG).
|
||||
|
||||
These properties may be used in Spring Boot `application.properties` files, or as JVM System properties, to configure
|
||||
different aspects of or enable individual features of Apache Geode or Pivotal GemFire in a Spring application.
|
||||
When combined with the power of Spring Boot, magical things begin to happen.
|
||||
different aspects of or enable individual features of Apache Geode in a Spring application. When combined with
|
||||
the power of Spring Boot, magical things begin to happen.
|
||||
|
||||
[[geode-configuration-metadata-springdata]]
|
||||
=== Spring Data Based Properties
|
||||
@@ -20,7 +20,7 @@ property, use `spring.data.gemfire.cache.copy-on-read` in Spring Boot `applicati
|
||||
|=====================================================================================================================
|
||||
| Name | Description | Default | From
|
||||
|
||||
| name | Name of the Apache Geode / Pivotal GemFire member. | SpringBasedCacheClientApplication | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#name--[ClientCacheApplication.name]
|
||||
| name | Name of the Apache Geode member. | SpringBasedCacheClientApplication | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#name--[ClientCacheApplication.name]
|
||||
| locators | Comma-delimited list of Locator endpoints formatted as: locator1[port1],...,locatorN[portN]. | [] | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/PeerCacheApplication.html#locators--[PeerCacheApplication.locators]
|
||||
| use-bean-factory-locator | Enable the SDG BeanFactoryLocator when mixing Spring config with GemFire/Geode native config (e.g. cache.xml) and you wish to configure GemFire objects declared in cache.xml with Spring. | false | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#useBeanFactoryLocator--[ClientCacheApplication.useBeanFactoryLocator]
|
||||
|
||||
@@ -38,7 +38,7 @@ property, use `spring.data.gemfire.cache.copy-on-read` in Spring Boot `applicati
|
||||
| cache.enable-auto-region-lookup | Configure whether to lookup Regions configured in GemFire/Geode native config and declare them as Spring beans. | false | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableAutoRegionLookup.html#enabled--[EnableAutoRegionLookup.enable]
|
||||
| cache.eviction-heap-percentage | Percentage of heap at or above which the eviction should begin on Regions configured for HeapLRU eviction. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#evictionHeapPercentage--[ClientCacheApplication.evictionHeapPercentage]
|
||||
| cache.eviction-off-heap-percentage | Percentage of off-heap at or above which the eviction should begin on Regions configured for HeapLRU eviction. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#evictionOffHeapPercentage--[ClientCacheApplication.evictionOffHeapPercentage]
|
||||
| cache.log-level | Configure the log-level of an Apache Geode / Pivotal GemFire cache. | config | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#logLevel--[ClientCacheApplication.logLevel]
|
||||
| cache.log-level | Configure the log-level of an Apache Geode cache. | config | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#logLevel--[ClientCacheApplication.logLevel]
|
||||
| cache.name | Alias for 'spring.data.gemfire.name'. | SpringBasedCacheClientApplication | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html#name--[ClientCacheApplication.name]
|
||||
| cache.compression.bean-name | Name of a Spring bean implementing org.apache.geode.compression.Compressor. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableCompression.html#compressorBeanName--[EnableCompression.compressorBeanName]
|
||||
| cache.compression.region-names | Comma-delimited list of Region names for which compression will be configured. | [] | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableCompression.html#regionNames--[EnableCompression.regionNames]
|
||||
@@ -188,7 +188,7 @@ specified location and limited to the defined size.
|
||||
|=====================================================================================================================
|
||||
| Name | Description | Default | From
|
||||
|
||||
| logging.level | Configures the log-level of an Apache Geode / Pivotal GemFire cache; Alias for 'spring.data.gemfire.cache.log-level'. | config | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableLogging.html#logLevel--[EnableLogging.logLevel]
|
||||
| logging.level | Configures the log-level of an Apache Geode cache; Alias for 'spring.data.gemfire.cache.log-level'. | config | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableLogging.html#logLevel--[EnableLogging.logLevel]
|
||||
| logging.log-disk-space-limit | Configures the amount of disk space allowed to store log files. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableLogging.html#logDiskSpaceLimit--[EnableLogging.logDiskSpaceLimit]
|
||||
| logging.log-file | Configures the pathname of the log file used to log messages. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableLogging.html#logFile--[EnableLogging.logFile]
|
||||
| logging.log-file-size | Configures the maximum size of a log file before the log file is rolled. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableLogging.html#logFileSizeLimit--[EnableLogging.logFileSize]
|
||||
@@ -328,7 +328,7 @@ specified location and limited to the defined size.
|
||||
| service.http.bind-address | Configures the IP address or hostname of the system NIC used by the embedded HTTP server to bind and listen for HTTP(S) connections. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableHttpService.html#bindAddress--[EnableHttpService.bindAddress]
|
||||
| service.http.port | Configures the port used by the embedded HTTP server to listen for HTTP(S) connections. | 7070 | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableHttpService.html#port--[EnableHttpService.port]
|
||||
| service.http.ssl-require-authentication | Configures whether 2-way HTTP authentication is required. | false | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableHttpService.html#sslRequireAuthentication--[EnableHttpService.sslRequireAuthentication]
|
||||
| service.http.dev-rest-api-start | Configures whether to start the Developer REST API web service. A full installation of Apache Geode or Pivotal GemFire is required and you must set the $GEODE environment variable. | false | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableHttpService.html#startDeveloperRestApi--[EnableHttpService.startDeveloperRestApi]
|
||||
| service.http.dev-rest-api-start | Configures whether to start the Developer REST API web service. A full installation of Apache Geode is required and you must set the $GEODE environment variable. | false | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableHttpService.html#startDeveloperRestApi--[EnableHttpService.startDeveloperRestApi]
|
||||
| service.memcached.port | Configures the port of the embedded Memcached server (service). | 11211| {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableMemcachedServer.html#port--[EnableMemcachedServer.port]
|
||||
| service.memcached.protocol | Configures the protocol used by the embedded Memcached server (service). | ASCII | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableMemcachedServer.html#protocol--[EnableMemcachedServer.protocol]
|
||||
| service.redis.bind-address | Configures the IP address or hostname of the system NIC used by the embedded Redis server to bind an listen for connections. | | {spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableRedisServer.html#bindAddress--[EnableRedis.bindAddress]
|
||||
@@ -366,6 +366,5 @@ While it is not recommended to use Apache Geode properties directly in your Spri
|
||||
you from doing so. A complete reference to the Apache Geode specific properties can be found
|
||||
{apache-geode-docs}/reference/topics/gemfire_properties.html[here].
|
||||
|
||||
WARNING: Apache Geode (and Pivotal GemFire) are very strict about the properties that maybe specified in
|
||||
a `gemfire.properties` file. You cannot mix Spring properties with `gemfire.*` properties in an Apache Geode
|
||||
or Pivotal GemFire, `gemfire.properties` file.
|
||||
WARNING: Apache Geode is very strict about the properties that maybe specified in a `gemfire.properties` file. You
|
||||
cannot mix Spring properties with `gemfire.*` properties in an Apache Geode `gemfire.properties` file.
|
||||
|
||||
@@ -5,21 +5,20 @@ Arguably, the most invaluable of applications are those that can process a strea
|
||||
and intelligently react in near real-time to the countless changes in the data over time. The most useful
|
||||
of frameworks are those that can make processing a stream of events as they happen, as easy as possible.
|
||||
|
||||
Spring Boot for Apache Geode & Pivotal GemFire does just that, without users having to perform any complex setup
|
||||
or configure any necessary infrastructure components to enable such functionality. Developers can simply define
|
||||
the criteria for the data they are interested in and implement a handler to process the stream of events
|
||||
as they occur.
|
||||
Spring Boot for Apache Geode does just that, without users having to perform any complex setup or configure any
|
||||
necessary infrastructure components to enable such functionality. Developers can simply define the criteria for
|
||||
the data they are interested in and implement a handler to process the stream of events as they occur.
|
||||
|
||||
Apache Geode & Pivotal GemFire make defining criteria for data of interests easy when using
|
||||
Apache Geode make defining criteria for data of interests easy when using
|
||||
{apache-geode-docs}/developing/continuous_querying/chapter_overview.html[Continuous Query (CQ)]. With CQ, you can
|
||||
express the criteria matching the data of interests using a query predicate. Apache Geode & Pivotal GemFire implements
|
||||
express the criteria matching the data of interests using a query predicate. Apache Geode implements
|
||||
the {apache-geode-docs}/developing/querying_basics/query_basics.html[Object Query Language (OQL)] for defining
|
||||
and executing queries. OQL is not unlike SQL, and supports projections, query predicates, ordering and aggregates.
|
||||
And, when used in CQs, they execute continuously, firing events when the data changes in such ways as to match
|
||||
the criteria expressed in the query predicate.
|
||||
|
||||
Spring Boot for Apache Geode/Pivotal GemFire combines the ease of expressing interests in data using an OQL
|
||||
query statement with implementing the listener handler callback, in 1 easy step.
|
||||
Spring Boot for Apache Geode combines the ease of expressing interests in data using an OQL query statement with
|
||||
implementing the listener handler callback, in 1 easy step.
|
||||
|
||||
For example, suppose we want to perform some follow up action anytime a customer's financial loan application
|
||||
is either approved or denied.
|
||||
@@ -38,7 +37,7 @@ class EligibilityDecision {
|
||||
|
||||
private final Timespan timespan;
|
||||
|
||||
...
|
||||
// ...
|
||||
|
||||
enum Status {
|
||||
|
||||
@@ -64,7 +63,7 @@ class EligibilityDecisionPostProcessor {
|
||||
FROM /EligibilityDecisions decisions
|
||||
WHERE decisions.getStatus().name().equalsIgnoreCase('APPROVED')")
|
||||
public void processApprovedDecisions(CqEvent event) {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
|
||||
@ContinuousQuery(name = "DeniedDecisionsHandler",
|
||||
@@ -72,7 +71,7 @@ class EligibilityDecisionPostProcessor {
|
||||
FROM /EligibilityDecisions decisions
|
||||
WHERE decisions.getStatus().name().equalsIgnoreCase('DENIED')")
|
||||
public void processDeniedDecisions(CqEvent event) {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
@@ -83,6 +82,5 @@ anyway you like. And, because our Continuous Query handler class is a component
|
||||
`ApplicationContext`, you can auto-wire any other beans necessary to carry out the application's intended function.
|
||||
|
||||
This is not unlike Spring's {spring-framework-docs}/integration.html#jms-annotated[Annotation-driven listener endpoints]
|
||||
used in (JMS) message listeners/handlers, except in Spring Boot for Apache Geode/Pivotal GemFire, you do not need to do
|
||||
anything special to enable this functionality. Just declare the `@ContinuousQuery` annotation on any POJO method
|
||||
and off you go.
|
||||
used in (JMS) message listeners/handlers, except in Spring Boot for Apache Geode, you do not need to do anything special
|
||||
to enable this functionality. Just declare the `@ContinuousQuery` annotation on any POJO method and off you go.
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
== Data Serialization with PDX
|
||||
|
||||
Anytime data is overflowed or persisted to disk, transferred between clients and servers, peers in a cluster or between
|
||||
different clusters in a multi-site topology, then all data stored in Apache Geode/Pivotal GemFire must be serializable.
|
||||
different clusters in a multi-site topology, then all data stored in Apache Geode must be serializable.
|
||||
|
||||
To serialize objects in Java, object types must implement the `java.io.Serializable` interface. However, if you have
|
||||
a large number of application domain object types that currently do not implement `java.io.Serializable`, then
|
||||
refactoring hundreds or even thousands of class types to implement `Serializable` would be a tedious task just to
|
||||
store and manage those objects in Apache Geode or Pivotal GemFire.
|
||||
store and manage those objects in Apache Geode.
|
||||
|
||||
Additionally, it is not just your application domain object types you necessarily need to worry about either. If you
|
||||
used 3rd party libraries in your application domain model, any types referred to by your application domain object types
|
||||
stored in Apache Geode or Pivotal GemFire must be serializable too. This type explosion may bleed into class types
|
||||
for which you may have no control over.
|
||||
stored in Apache Geode must be serializable too. This type explosion may bleed into class types for which you may have
|
||||
no control over.
|
||||
|
||||
Furthermore, Java serialization is not the most efficient format given that meta-data about your types is stored with
|
||||
the data itself. Therefore, even though Java serialized bytes are more descriptive, it adds a great deal of overhead.
|
||||
|
||||
Then, along came serialization using Apache Geode or Pivotal GemFire's {apache-geode-docs}/developing/data_serialization/gemfire_pdx_serialization.html[PDX]
|
||||
Then, along came serialization using Apache Geode {apache-geode-docs}/developing/data_serialization/gemfire_pdx_serialization.html[PDX]
|
||||
format. PDX stands for _Portable Data Exchange_, and achieves 4 goals:
|
||||
|
||||
1. Separates type meta-data from the data itself making the bytes more efficient during transfer. Apache Geode
|
||||
and Pivotal GemFire maintain a type registry storing type meta-data about the objects serialized using PDX.
|
||||
1. Separates type meta-data from the data itself making the bytes more efficient during transfer. Apache Geode maintains
|
||||
a type registry storing type meta-data about the objects serialized using PDX.
|
||||
|
||||
2. Supports versioning as your application domain types evolve. It is not uncommon to have old and new applications
|
||||
deployed to production, running simultaneously, sharing data, and possibly using different versions of the same domain
|
||||
@@ -50,7 +50,7 @@ de-serializing the object bytes since it involves a method invocation, which def
|
||||
preserving format to avoid the cost of de/serialization.
|
||||
|
||||
However, we think the benefits of using PDX greatly outweigh the limitations and therefore have enabled PDX by default
|
||||
when using Spring Boot for Apache Geode/Pivotal GemFire.
|
||||
when using Spring Boot for Apache Geode.
|
||||
|
||||
There is nothing special you need to do. Simply code your types and rest assured that objects of those types will be
|
||||
properly serialized when overflowed/persisted to disk, transferred between clients and servers, or peers in a cluster
|
||||
@@ -61,17 +61,17 @@ and even when data is transferred over the WAN when using GemFire/Geode's multi-
|
||||
----
|
||||
@Region("EligibilityDecisions")
|
||||
class EligibilityDecision {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
TIP: Apache Geode/Pivotal GemFire does {apache-geode-docs}/developing/data_serialization/java_serialization.html[support]
|
||||
the standard Java Serialization format.
|
||||
TIP: Apache Geode does {apache-geode-docs}/developing/data_serialization/java_serialization.html[support] the standard
|
||||
Java Serialization format.
|
||||
|
||||
=== SDG `MappingPdxSerializer` vs. GemFire/Geode's `ReflectionBasedAutoSerializer`
|
||||
|
||||
Under-the-hood, Spring Boot for Apache Geode/Pivotal GemFire {spring-data-geode-docs-html}/#bootstrap-annotation-config-pdx[enables]
|
||||
and uses Spring Data for Apache Geode/Pivotal GemFire's {spring-data-geode-javadoc}/org/springframework/data/gemfire/mapping/MappingPdxSerializer.html[MappingPdxSerializer]
|
||||
Under-the-hood, Spring Boot for Apache Geode {spring-data-geode-docs-html}/#bootstrap-annotation-config-pdx[enables]
|
||||
and uses Spring Data for Apache Geode's {spring-data-geode-javadoc}/org/springframework/data/gemfire/mapping/MappingPdxSerializer.html[MappingPdxSerializer]
|
||||
to serialize your application domain objects using PDX.
|
||||
|
||||
TIP: Refer to the SDG {spring-data-geode-docs-html}/#mapping.pdx-serializer[Reference Guide] for more details
|
||||
@@ -104,7 +104,7 @@ with Spring Data's {spring-data-commons-javadoc}/org/springframework/data/annota
|
||||
of nested entity field/property types.
|
||||
|
||||
Number two above deserves special attention since the `MappingPdxSerializer` "excludes" all Java, Spring
|
||||
and Apache Geode/Pivotal GemFire types, by default. But, what happens when you need to serialize 1 of those types?
|
||||
and Apache Geode types, by default. But, what happens when you need to serialize 1 of those types?
|
||||
|
||||
For example, suppose you need to be able to serialize objects of type `java.security.Principal`. Well, then you can
|
||||
override the excludes by registering an "include" type filter, like so:
|
||||
@@ -114,7 +114,6 @@ override the excludes by registering an "include" type filter, like so:
|
||||
package example.app;
|
||||
|
||||
import java.security.Principal;
|
||||
import ...;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnablePdx(serializerBeanName = "myCustomMappingPdxSerializer")
|
||||
|
||||
@@ -15,21 +15,20 @@ Additionally, when the computations are handled in parallel, across the cluster
|
||||
can be performed much faster. This typically involves intelligently organizing the data using various partitioning
|
||||
(a.k.a. sharding) strategies to uniformly balance the data set across the cluster.
|
||||
|
||||
Well, both Apache Geode and Pivotal GemFire address this very important application concern in its
|
||||
Well, Apache Geode address this very important application concern in its
|
||||
{apache-geode-docs}/developing/function_exec/chapter_overview.html[Function Execution] framework.
|
||||
|
||||
Spring Data for Apache Geode/Pivotal GemFire {spring-data-geode-docs-html}/#function-annotations[builds] on
|
||||
this Function Execution framework by enabling developers to {spring-data-geode-docs-html}/#function-implementation[implement]
|
||||
Spring Data for Apache Geode {spring-data-geode-docs-html}/#function-annotations[builds] on this Function Execution
|
||||
framework by enabling developers to {spring-data-geode-docs-html}/#function-implementation[implement]
|
||||
and {spring-data-geode-docs-html}/#function-execution[execute] GemFire/Geode Functions using a very simple POJO-based,
|
||||
annotation configuration model.
|
||||
|
||||
TIP: See {spring-data-geode-docs-html}/#_implementation_vs_execution[here] for the difference between
|
||||
Function implementation & executions.
|
||||
|
||||
Taking this 1 step further, Spring Boot for Apache Geode/Pivotal GemFire _auto-configures_ and enables both Function
|
||||
implementation and execution out-of-the-box. Therefore, you can immediately begin writing Functions and invoking them
|
||||
without having to worry about all the necessary plumbing to begin with. You can rest assured that it will just work
|
||||
as expected.
|
||||
Taking this 1 step further, Spring Boot for Apache Geode _auto-configures_ and enables both Function implementation
|
||||
and execution out-of-the-box. Therefore, you can immediately begin writing Functions and invoking them without having
|
||||
to worry about all the necessary plumbing to begin with. You can rest assured that it will just work as expected.
|
||||
|
||||
=== Applying Functions
|
||||
|
||||
@@ -58,7 +57,7 @@ class EligibilityDeterminationFunction {
|
||||
|
||||
@GemfireFunction(HA = true, hasResult = true, optimizeForWrite=true)
|
||||
public EligibilityDecision determineEligibility(FunctionContext functionContext, Person person, Timespan timespan) {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
@@ -97,7 +96,7 @@ class FinancialLoanApplicationService {
|
||||
this.execution = execution;
|
||||
}
|
||||
|
||||
@Cacheable("EligibilityDecisions", ...)
|
||||
@Cacheable("EligibilityDecisions")
|
||||
EligibilityDecision processEligility(Person person, Timespan timespan) {
|
||||
return this.execution.determineEligibility(person, timespan);
|
||||
}
|
||||
@@ -105,6 +104,6 @@ class FinancialLoanApplicationService {
|
||||
----
|
||||
|
||||
Just like caching, no addition configuration is required to enable and find your application Function implementations
|
||||
and executions. Simply build and run. Spring Boot for Apache Geode/Pivotal GemFire handles the rest.
|
||||
and executions. Simply build and run. Spring Boot for Apache Geode handles the rest.
|
||||
|
||||
TIP: It is common to implement and register your application Functions on the server and execute them from the client.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[[geode-configuration-gemfire-properties]]
|
||||
== Using Geode Properties
|
||||
:gemfire-name: Pivotal GemFire
|
||||
:gemfire-name: VMWare Tanzu GemFire
|
||||
:geode-name: Apache Geode
|
||||
|
||||
As of Spring Boot for {geode-name} & {gemfire-name} (SBDG) 1.3, it is now possible to declare {geode-name}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[[geode-api-extensions]]
|
||||
== Apache Geode API Extensions
|
||||
:gemfire-name: Pivotal GemFire
|
||||
:gemfire-name: VMware Tanzu GemFire
|
||||
:geode-name: Apache Geode
|
||||
:images-dir: ./images
|
||||
|
||||
|
||||
@@ -16,15 +16,15 @@ e.g. `log-level` no longer have any effect, regardless of whether the property (
|
||||
TIP: Refer to Apache Geode's {apache-geode-docs}/reference/topics/gemfire_properties.html[Documentation]
|
||||
for a complete list of valid `Properties`, including the `Properties` used to configure logging.
|
||||
|
||||
Unfortunately, this also means the _Spring Data for Apache Geode & Pivotal GemFire_ (SDG)
|
||||
Unfortunately, this also means the _Spring Data for Apache Geode_ (SDG)
|
||||
{spring-data-geode-javadoc}/org/springframework/data/gemfire/config/annotation/EnableLogging.html[`@EnableLogging`]
|
||||
annotation no longer has any effect on Apache Geode or Pivotal GemFire logging either and is the reason it has been
|
||||
annotation no longer has any effect on Apache Geode logging either and is the reason it has been
|
||||
https://jira.spring.io/browse/DATAGEODE-299[deprecated]. The reason `@EnableLogging` no longer has any effect on
|
||||
logging is because this annotation's attributes and associated SDG properties indirectly sets the corresponding
|
||||
Apache Geode or Pivotal GemFire properties, which again, are useless from Apache Geode `1.9.2` onward.
|
||||
Apache Geode properties, which again, are useless from Apache Geode `1.9.2` onward.
|
||||
|
||||
By way of example, and to make this concrete, **none** of the following approaches have any effect on Apache Geode
|
||||
or Pivotal GemFire logging:
|
||||
By way of example, and to make this concrete, **none** of the following approaches have any effect
|
||||
on Apache Geode logging:
|
||||
|
||||
.Command-line configuration
|
||||
[source,txt]
|
||||
@@ -36,7 +36,7 @@ $ java -classpath ...:/path/to/MySpringBootApacheGeodeClientCacheApplication.jar
|
||||
.Externalized configuration using Apache Geode `gemfire.properties`
|
||||
[source,properties]
|
||||
----
|
||||
# Apache Geode/Pivotal GemFire only/specific properties
|
||||
# Apache Geode only/specific properties
|
||||
log-level=INFO
|
||||
----
|
||||
|
||||
@@ -66,11 +66,11 @@ class MySpringBootApacheGeodeClientApplication {
|
||||
That is to say, none of the approaches above have any effect without the **new** SBDG logging starter.
|
||||
|
||||
[[geode-logging-configuration]]
|
||||
=== Configure Apache Geode & Pivotal GemFire Logging
|
||||
=== Configure Apache Geode Logging
|
||||
|
||||
So, how do you configure logging for Apache Geode and Pivotal GemFire?
|
||||
So, how do you configure logging for Apache Geode?
|
||||
|
||||
Effectively, 3 things are required to get Apache Geode or Pivotal GemFire to log output:
|
||||
Effectively, 3 things are required to get Apache Geode to log output:
|
||||
|
||||
1) First, you must declare a logging provider on your Spring Boot application classpath (e.g. _Logback_).
|
||||
|
||||
@@ -103,7 +103,7 @@ or bridges `java.util.logging` (JUL) and Apache Log4j to SLF4J. However, you st
|
||||
configuration, such as a `logback.xml` file for _Logback_, to configure logging not only for your Spring Boot
|
||||
application, but also for Apache Geode as well.
|
||||
|
||||
SBDG has simplified the setup of Apache Geode and Pivotal GemFire logging. Simply declare the
|
||||
SBDG has simplified the setup of Apache Geode logging. Simply declare the
|
||||
`org.springframework.geode:spring-geode-starter-logging` dependency on your Spring Boot application classpath!
|
||||
|
||||
Unlike Apache Geode's default Log4j XML configuration file (i.e. `log4j2.xml`), SBDG's provided `logback.xml`
|
||||
@@ -129,8 +129,8 @@ SBDG's _Logback_ configuration defines 3 Loggers to control the log output from
|
||||
<logger name="org.jgroups" level="${spring.boot.data.gemfire.jgroups.log.level:-ERROR}"/>
|
||||
----
|
||||
|
||||
The `com.gemstone.gemfire` Logger is a legacy Logger covering old Pivotal GemFire bits still present in Apache Geode
|
||||
for backwards compatibility reasons. This Logger's use should be largely unnecessary.
|
||||
The `com.gemstone.gemfire` Logger is a legacy Logger covering old VMware Tanzu GemFire bits still present
|
||||
in Apache Geode for backwards compatibility reasons. This Logger's use should be largely unnecessary.
|
||||
|
||||
The `org.apache.geode` Logger is the primary Logger used to control log output from all Apache Geode components
|
||||
during the runtime operation of Apache Geode. Both this Logger and the legacy `com.gemstone.gemfire` Logger default
|
||||
@@ -238,7 +238,7 @@ For example, you could compose both the _Logback_ `ConsoleAppender` and `FileApp
|
||||
.Composing multiple `Appenders`
|
||||
[source,java]
|
||||
----
|
||||
ConsoleAppender<ILoggingEvent> consoleAppender = ...;
|
||||
ConsoleAppender<ILoggingEvent> consoleAppender = ... ;
|
||||
|
||||
FileAppender<ILoggingEvent> fileAppender = ...;
|
||||
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
[[geode-repositories]]
|
||||
== Spring Data Repositories
|
||||
|
||||
Using Spring Data Repositories with Apache Geode or Pivotal GemFire makes short work of data access operations when
|
||||
using either Apache Geode or Pivotal GemFire as your System of Record (SOR) to persist your application's state.
|
||||
Using Spring Data Repositories with Apache Geode makes short work of data access operations when using Apache Geode
|
||||
as your System of Record (SOR) to persist your application's state.
|
||||
|
||||
{spring-data-commons-docs-html}/#repositories[Spring Data Repositories] provides a convenient and highly powerful way
|
||||
to define basic CRUD and simple query data access operations easily just by specifying the contract of those data access
|
||||
operations in a Java interface.
|
||||
|
||||
Spring Boot for Apache Geode & Pivotal GemFire _auto-configures_ the Spring Data for Apache Geode/Pivotal GemFire
|
||||
{spring-data-geode-docs-html}/#gemfire-repositories[Repository extension] when either is declared on your application's
|
||||
classpath. You do not need to do anything special to enable it. Simply start coding your application-specific
|
||||
Repository interfaces and the way you go.
|
||||
Spring Boot for Apache Geode _auto-configures_ the Spring Data for Apache Geode {spring-data-geode-docs-html}/#gemfire-repositories[Repository extension]
|
||||
when declared on your application's classpath. You do not need to do anything special to enable it. Simply start
|
||||
coding your application-specific Repository interfaces and the way you go.
|
||||
|
||||
For example:
|
||||
|
||||
@@ -83,5 +82,5 @@ class SpringBootApacheGeodeClientCacheApplication {
|
||||
----
|
||||
|
||||
Again, see Spring Data Commons' {spring-data-commons-docs-html}/#repositories[Repositories abstraction] in general,
|
||||
and Spring Data for Apache Geode/Pivotal GemFire {spring-data-geode-docs-html}/#gemfire-repositories[Repositories extension]
|
||||
and Spring Data for Apache Geode {spring-data-geode-docs-html}/#gemfire-repositories[Repositories extension]
|
||||
in particular, for more details.
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
[[geode-samples]]
|
||||
== Samples
|
||||
|
||||
This section contains working examples demonstrating how to use Spring Boot for Apache Geode and Pivotal GemFire (SBDG)
|
||||
effectively.
|
||||
This section contains working examples demonstrating how to use Spring Boot for Apache Geode (SBDG) effectively.
|
||||
|
||||
Some examples focus on specific Use Cases (e.g. [(HTTP) Session state] caching) while other examples demonstrate how
|
||||
SBDG works under-the-hood to give users a better understanding of what is actually happening and how to debug problems
|
||||
with their Apache Geode / Pivotal GemFire, Spring Boot applications.
|
||||
with their Apache Geode, Spring Boot applications.
|
||||
|
||||
.Example Spring Boot applications using Apache Geode
|
||||
|===
|
||||
@@ -17,15 +16,15 @@ with their Apache Geode / Pivotal GemFire, Spring Boot applications.
|
||||
applications with Spring Boot.
|
||||
| {github-samples-url}/intro/getting-started[Getting Started]
|
||||
|
||||
| link:guides/boot-configuration.html[Spring Boot Auto-Configuration for Apache Geode/Pivotal GemFire]
|
||||
| link:guides/boot-configuration.html[Spring Boot Auto-Configuration for Apache Geode]
|
||||
| Explains what auto-configuration is provided by SBDG out-of-the-box and what the auto-configuration is doing.
|
||||
| {github-samples-url}/boot/configuration[Boot Auto-Configuration]
|
||||
|
||||
| link:guides/boot-actuator.html[Spring Boot Actuator for Apache Geode/Pivotal GemFire]
|
||||
| link:guides/boot-actuator.html[Spring Boot Actuator for Apache Geode]
|
||||
| Explains how to use Spring Boot Actuator for Apache Geode and how it works.
|
||||
| {github-samples-url}/boot/actuator[Boot Actuator]
|
||||
|
||||
| link:guides/boot-security.html[Spring Boot Security for Apache Geode/Pivotal GemFire]
|
||||
| link:guides/boot-security.html[Spring Boot Security for Apache Geode]
|
||||
| Explains how to configure Auth and TLS with SSL when using Apache Geode and Pivotal Cloud Cache
|
||||
in Spring Boot applications.
|
||||
| {github-samples-url}/boot/security[Boot Security]
|
||||
|
||||
@@ -20,11 +20,11 @@ the core Spring Framework.
|
||||
|
||||
Other Spring Data modules, such as Spring Data Redis, offer the
|
||||
https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/RedisTemplate.html[RedisTemplate],
|
||||
and Spring Data for Apache Geode/Pivotal GemFire (SDG) offers the
|
||||
and Spring Data for Apache Geode (SDG) offers the
|
||||
{spring-data-gemfire-javadoc}/org/springframework/data/gemfire/GemfireTemplate.html[GemfireTemplate].
|
||||
|
||||
The `GemfireTemplate` provides a highly consistent and familiar API to perform data access operations on Apache Geode
|
||||
or Pivotal GemFire cache `Regions`.
|
||||
cache `Regions`.
|
||||
|
||||
`GemfireTemplate` offers:
|
||||
|
||||
@@ -33,8 +33,8 @@ or Pivotal GemFire cache `Regions`.
|
||||
3. Automatic enlistment in the presence of local, cache transactions.
|
||||
4. Protection from {apache-geode-javadoc}/org/apache/geode/cache/Region.html[Region API] breaking changes.
|
||||
|
||||
Given these conveniences, Spring Boot for Apache Geode & Pivotal GemFire (SBDG) will auto-configure `GemfireTemplate`
|
||||
beans for each Region present in the GemFire/Geode cache.
|
||||
Given these conveniences, Spring Boot for Apache Geode (SBDG) will auto-configure `GemfireTemplate` beans for each
|
||||
Region present in the cache.
|
||||
|
||||
Additionally, SBDG is careful not to create a `GemfireTemplate` if the user has already declared a `GemfireTemplate`
|
||||
bean in the Spring `ApplicationContext` for a given Region.
|
||||
@@ -51,7 +51,7 @@ class GemFireConfiguration {
|
||||
|
||||
@Bean("Example")
|
||||
ClientRegionFactoryBean<?, ?> exampleRegion (GemFireCache gemfireCache) {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
}
|
||||
----
|
||||
@@ -88,7 +88,7 @@ Given the following entity class:
|
||||
----
|
||||
@Region("Customers")
|
||||
class Customer {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -97,9 +97,9 @@ And configuration:
|
||||
[source,java]
|
||||
----
|
||||
@Configuration
|
||||
@EnableEntityDefinedRegions(basePackageClasses = Customer.class}
|
||||
@EnableEntityDefinedRegions(basePackageClasses = Customer.class)
|
||||
class GemFireConfiguration {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -127,9 +127,8 @@ explicitly or implicitly, such as when using the `@EnableEntityDefineRegions` an
|
||||
SBDG auto-configures `GemfireTemplate` beans for Caching-defined Regions.
|
||||
|
||||
When you are using Spring Framework's {spring-framework-docs}/integration.html#cache[Cache Abstraction] backed by
|
||||
either Apache Geode or Pivotal GemFire, 1 of the requirements is to configure Regions for each of the caches specified
|
||||
in the {spring-framework-docs}integration.html#cache-annotations[Caching Annotations] of your application service
|
||||
components.
|
||||
Apache Geode, 1 of the requirements is to configure Regions for each of the caches specified in the
|
||||
{spring-framework-docs}integration.html#cache-annotations[Caching Annotations] of your application service components.
|
||||
|
||||
Fortunately, SBDG makes enabling and configuring caching easy and <<geode-caching-provider,automatic>> out-of-the-box.
|
||||
|
||||
@@ -183,8 +182,8 @@ when autowiring does not.
|
||||
[[geode-data-access-region-templates-native-defined]]
|
||||
=== Native-defined Regions
|
||||
|
||||
SBDG will even auto-configure `GemfireTemplate` beans for Regions defined using Apache Geode and Pivotal GemFire native
|
||||
configuration meta-data, such as `cache.xml`.
|
||||
SBDG will even auto-configure `GemfireTemplate` beans for Regions defined using Apache Geode native configuration
|
||||
metadata, such as `cache.xml`.
|
||||
|
||||
Given the following GemFire/Geode native `cache.xml`:
|
||||
|
||||
@@ -208,7 +207,7 @@ And Spring configuration:
|
||||
@Configuration
|
||||
@EnableGemFireProperties(cacheXmlFile = "cache.xml")
|
||||
class GemFireConfiguration {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -243,7 +242,7 @@ class GemFireConfiguration {
|
||||
|
||||
@Bean
|
||||
public GemfireTemplate customersTemplate(GemFireCache cache) {
|
||||
return new GemfireTemplate(cache.getRegion("/Customers");
|
||||
return new GemfireTemplate(cache.getRegion("/Customers"));
|
||||
}
|
||||
}
|
||||
----
|
||||
@@ -254,7 +253,7 @@ Using our same Customers class, as above:
|
||||
----
|
||||
@Region("Customers")
|
||||
class Customer {
|
||||
...
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
@@ -278,7 +277,7 @@ class GemFireConfiguration {
|
||||
|
||||
@Bean
|
||||
public GemfireTemplate vipCustomersTemplate(GemFireCache cache) {
|
||||
return new GemfireTemplate(cache.getRegion("/Customers");
|
||||
return new GemfireTemplate(cache.getRegion("/Customers"));
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
@@ -160,10 +160,9 @@ expired or been evicted. We neither configure eviction nor expiration for this
|
||||
|
||||
Both the `factorial(..)` and `sqrt(..)` methods have been annotated with Spring's `@Cacheable` annotation to demarcate
|
||||
these methods with caching behavior. Of course, as explained in SBDG's <<../_includes/configuration-annotations.adoc#geode-caching-provider,documentation>>,
|
||||
caching with Spring's Cache Abstraction using Apache Geode (or Pivotal GemFire, even Pivotal Cloud Cache (PCC)
|
||||
when running in Pivotal CloudFoundry (PCF)) as the caching provider is enabled by default. Therefore, there is nothing
|
||||
more you need do to start leverage caching in your Spring Boot applications than to annotate the service methods
|
||||
with the appropriate Spring or JSR-107, JCache API annotations. Simple!
|
||||
caching with Spring's Cache Abstraction using Apache Geode as the caching provider is enabled by default. Therefore,
|
||||
there is nothing more you need do to start leverage caching in your Spring Boot applications than to annotate
|
||||
the service methods with the appropriate Spring or JSR-107, JCache API annotations. Simple!
|
||||
|
||||
It is worth noting that we are starting with the same applied pattern of caching as you would when using the
|
||||
_Look-Aside Caching_ pattern. This is key to minimizing the invasive nature of _Inline Caching_. There is a subtle
|
||||
@@ -187,7 +186,7 @@ The pertinent part of the configuration that enables _Inline Caching_ for our Ca
|
||||
the `inlineCachingForCalculatorApplicationRegionsConfigurer` bean definition.
|
||||
|
||||
SBDG provides the `InlineCachingRegionConfigurer` class used in the bean definition to configure and enable the caches
|
||||
(a.k.a. as Regions in Apache Geode & Pivotal GemFire terminology) with _Inline Caching_ behavior.
|
||||
(a.k.a. as Regions in Apache Geode terminology) with _Inline Caching_ behavior.
|
||||
|
||||
The Configurer's job is to configure the appropriate Spring Data (SD) _Repository_ used as a Region's `CacheLoader`
|
||||
for "_read-through_" behavior as well as configure the same SD _Repository_ for a Region's `CacheWriter` for
|
||||
@@ -260,9 +259,9 @@ these Regions for you.
|
||||
TIP: If you have not done so already, you should definitely read about SBDG's support for _Inline Caching_
|
||||
in the link:../index.html#geode-caching-provider-inline-caching[Inline Caching] section.
|
||||
|
||||
TIP: To learn more about how Apache Geode's (or Pivotal GemFire's) data loading functionality works, or specifically,
|
||||
how to {apache-geode-docs}/developing/outside_data_sources/sync_outside_data.html["Keep the Cache in Sync with Outside
|
||||
Data Sources"] follow the link. You may also learn more by reading the _Javadoc_ for
|
||||
TIP: To learn more about how Apache Geode's data loading functionality works, or specifically, how to
|
||||
{apache-geode-docs}/developing/outside_data_sources/sync_outside_data.html["Keep the Cache in Sync with Outside Data Sources"]
|
||||
follow the link. You may also learn more by reading the _Javadoc_ for
|
||||
{apache-geode-javadoc}//org/apache/geode/cache/CacheLoader.html[`CacheLoader`]
|
||||
and {apache-geode-javadoc}/org/apache/geode/cache/CacheWriter.html[`CacheWriter`].
|
||||
|
||||
|
||||
@@ -173,9 +173,8 @@ With the `org.springframework.geode:spring-geode-starter` dependency on your app
|
||||
And the `BootGeodeLookAsideCachingApplication` class annotated with `@SpringBootApplication`, you have everything you
|
||||
need to begin using Spring's _Cache Abstraction_ in your application with Apache Geode as the caching provider.
|
||||
|
||||
TIP: You can switch from open source Apache Geode to Pivotal GemFire (PCC) very easily simply by changing
|
||||
the artifactId from `spring-geode-starter` to `spring-gemfire-starter`. No configuration or code changes
|
||||
are necessary.
|
||||
TIP: You can switch from open source Apache Geode to VMware Tanzu GemFire very easily simply by changing the artifactId
|
||||
from `spring-geode-starter` to `spring-gemfire-starter`. No configuration or code changes are necessary.
|
||||
|
||||
As an application developer, all you need do is focus on where in your application caching would be most beneficial.
|
||||
|
||||
@@ -246,9 +245,8 @@ After running the `BootGeodeLookAsideCachingApplication` class, if you open a We
|
||||
[[geode-samples-caching-lookaside-example-counterservice-configuration]]
|
||||
=== Counter Service Configuration
|
||||
|
||||
While Spring Boot for Apache Geode/Pivotal GemFire (PCC), SBDG, takes care of enabling Spring's caching infrastructure
|
||||
for you, configuring Apache Geode/Pivotal GemFire (PCC) as a caching provider, you still must define and declare
|
||||
your individual caches.
|
||||
While Spring Boot for Apache Geode (SBDG) takes care of enabling Spring's caching infrastructure for you, configuring
|
||||
Apache Geode as a caching provider, you still must define and declare your individual caches.
|
||||
|
||||
No Spring caching provider is fully configured by Spring or Spring Boot for that matter. Part of the reason for this
|
||||
is that there are many different ways to configure the caches.
|
||||
@@ -268,9 +266,9 @@ include::{samples-dir}/caching/look-aside/src/main/java/example/app/caching/look
|
||||
----
|
||||
|
||||
The only thing of real significance here is the `@EnableCachingDefinedRegions` annotation. This Spring Data
|
||||
for Apache Geode/Pivotal GemFire (SDG) annotation is responsible for introspecting our Spring Boot application
|
||||
on Spring container startup, identifying all the caching annotations (both Spring Cache annotations as wells JSR-107,
|
||||
JCache annotations) used in our application components, and creating the appropriate caches.
|
||||
for Apache Geode (SDG) annotation is responsible for introspecting our Spring Boot application on Spring container
|
||||
startup, identifying all the caching annotations (both Spring Cache annotations as wells JSR-107, JCache annotations)
|
||||
used in our application components, and creating the appropriate caches.
|
||||
|
||||
If you were not using SDG's `@EnablingCachingDefinedRegions` annotation, then you would need to define the Region
|
||||
using the equivalent _JavaConfig_:
|
||||
@@ -547,9 +545,9 @@ B | 2
|
||||
|
||||
As you have learned, Spring makes enabling and using caching in your application really easy.
|
||||
|
||||
With SBDG, using either Apache Geode or Pivotal GemFire as your caching provider in Spring's _Cache Abstraction_
|
||||
is as easy as making sure `org.springframework.geode:spring-geode-starter` is on your application's classpath. You just
|
||||
need to focus on areas of your application that would benefit from caching.
|
||||
With SBDG, using Apache Geode as your caching provider in Spring's _Cache Abstraction_ is as easy as making sure
|
||||
`org.springframework.geode:spring-geode-starter` is on your application's classpath. You just need to focus on areas
|
||||
of your application that would benefit from caching.
|
||||
|
||||
You have now successfully used the _**Look-Aside Caching**_ pattern in your Spring Boot application.
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ include::{samples-dir}/caching/near/src/main/java/example/app/caching/near/serve
|
||||
----
|
||||
|
||||
TIP: For more information on configurating and bootstrapping a small cluster of {apache-geode-name} servers using Spring Boot,
|
||||
see link:../index.html#geode-cluster-configuration-bootstrapping[Running an {apache-geode-name} or Pivotal GemFire Cluster using Spring Boot].
|
||||
see link:../index.html#geode-cluster-configuration-bootstrapping[Running an {apache-geode-name} Cluster using Spring Boot].
|
||||
|
||||
[[geode-samples-caching-near-example-client-side]]
|
||||
=== Client-side Configuration
|
||||
|
||||
@@ -29,33 +29,33 @@ John Blum
|
||||
:docinfodir: guides
|
||||
|
||||
|
||||
This guide walks you through building and running a simple Spring Boot, Apache Geode `ClientCache` application
|
||||
using the Spring Boot for Apache Geode (SBDG) framework. Later in this guide, we switch the application from
|
||||
{apache-geode-website}[Apache Geode] to {pivotal-cloudcache-website}[Pivotal Cloud Cache] and deploy (i.e `_push_`)
|
||||
This guide walks you through building and running a simple Spring Boot, {geode-name} `ClientCache` application
|
||||
using the Spring Boot for {geode-name} (SBDG) framework. Later in this guide, we switch the application from
|
||||
{apache-geode-website}[{geode-name}] to {pivotal-cloudcache-website}[{cloudcache-name}] and deploy (i.e `_push_`)
|
||||
the application up to {pivotal-cloudfoundry-website}[_Pivotal Platform_].
|
||||
|
||||
Specifically, you will:
|
||||
|
||||
1. Create a new "_Spring for Apache Geode_" project using _Spring Initializer_ at https://start.spring.io[start.spring.io].
|
||||
1. Create a new "_Spring for {geode-name}_" project using _Spring Initializer_ at https://start.spring.io[start.spring.io].
|
||||
Goto the <<geode-samples-getting-started-spring-initializer,Spring Initializer>> topic.
|
||||
2. Then, we build a simple Spring Boot, Apache Geode `ClientCache` application that can persist data locally
|
||||
in Apache Geode. Goto the <<spring-geode-samples-getting-started-build-app,Build App>> topic.
|
||||
2. Then, we build a simple Spring Boot, {geode-name} `ClientCache` application that can persist data locally
|
||||
in {geode-name}. Goto the <<spring-geode-samples-getting-started-build-app,Build App>> topic.
|
||||
3. Next, we switch the application from running locally to using a client/server topology.
|
||||
Goto the <<spring-geode-samples-getting-started-run-app-clientserver,Client/Server>> topic.
|
||||
4. And finally, we deploy the application to _Pivotal Platform_ and bind our application to a provisioned
|
||||
_Pivotal Cloud Cache_ (PCC) service instance.
|
||||
_{cloudcache-name}_ (PCC) service instance.
|
||||
Goto the <<spring-geode-samples-getting-started-run-app-cloudplatform,Cloud Platform>> topic.
|
||||
|
||||
Our goal is to accomplish each step with _little to no code or configuration_ changes. It should just work!
|
||||
|
||||
NOTE: It is also possible to migrate from a Commercial, Managed environment (running in _Pivotal Platform_
|
||||
using _Pivotal Cloud Cache_ (PCC)) back to an Open Source, Non-Managed environment (i.e. running with an externally
|
||||
managed Apache Geode cluster).
|
||||
using _{cloudcache-name}_ (PCC)) back to an Open Source, Non-Managed environment (i.e. running with an externally
|
||||
managed {geode-name} cluster).
|
||||
|
||||
By the end of this guide, you should feel comfortable and ready to begin building Spring Boot applications using either
|
||||
Apache Geode standalone or by deploying and running in _Pivotal Platform_ using _Pivotal Cloud Cache_ (PCC).
|
||||
{geode-name} standalone or by deploying and running in _Pivotal Platform_ using _{cloudcache-name}_ (PCC).
|
||||
|
||||
NOTE: {pivotal-cloudcache-website}[_Pivotal Cloud Cache_] (PCC) has replaced {pivotal-gemfire-website}[_Pivotal GemFire_]
|
||||
NOTE: {pivotal-cloudcache-website}[_{cloudcache-name}_] (PCC) has replaced {pivotal-gemfire-website}[_{gemfire-name}_]
|
||||
as the new brand name.
|
||||
|
||||
Let's begin!
|
||||
@@ -80,7 +80,7 @@ When creating the example app for this guide, we selected:
|
||||
** _Artifact_: **crm**
|
||||
** _Options_:
|
||||
*** _Package Name_: **example.app.crm**
|
||||
* _Dependencies_: Add "**Spring for Apache Geode**" by typing "_Geode_" into the "_Search dependencies to add_"
|
||||
* _Dependencies_: Add "**Spring for {geode-name}**" by typing "_Geode_" into the "_Search dependencies to add_"
|
||||
text field.
|
||||
* (Optional) _Dependencies_: Add "_Spring Web_" to pull in `org.springframework.boot:spring-boot-starter-web`
|
||||
if you want this Spring Boot application to be a Web application.
|
||||
@@ -98,7 +98,7 @@ Your selections should look similar to:
|
||||
|
||||
image::{images-dir}/spring-initializer-screenshot.png[]
|
||||
|
||||
Be sure to click the "*+*" button next to the "_Spring for Apache Geode_" dependency to select and add it to
|
||||
Be sure to click the "*+*" button next to the "_Spring for {geode-name}_" dependency to select and add it to
|
||||
the generated project Maven POM file.
|
||||
|
||||
You can explore the contents of the generated project by pressing the `CTRL+SPACE` keys:
|
||||
@@ -112,7 +112,7 @@ Download the ZIP file and unpack it to your desired working directory.
|
||||
You can then use your favorite IDE (e.g. https://www.jetbrains.com/idea/[IntelliJ IDEA]
|
||||
or https://spring.io/tools[Spring Tool Suite] (STS)) to open the generated project.
|
||||
|
||||
You are ready to begin developing your Spring Boot, Apache Geode `ClientCache` application.
|
||||
You are ready to begin developing your Spring Boot, {geode-name} `ClientCache` application.
|
||||
|
||||
[[about-versions]]
|
||||
.Versions
|
||||
@@ -151,10 +151,10 @@ public class CrmApplication {
|
||||
}
|
||||
----
|
||||
|
||||
Additionally, in the project Maven POM file, we see the "_Spring Boot for Apache Geode_" (SBDG) dependency
|
||||
Additionally, in the project Maven POM file, we see the "_Spring Boot for {geode-name}_" (SBDG) dependency
|
||||
(`org.springframework.geode:spring-geode-starter)`:
|
||||
|
||||
.Spring Boot for Apache Geode dependency
|
||||
.Spring Boot for {geode-name} dependency
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -164,9 +164,9 @@ Additionally, in the project Maven POM file, we see the "_Spring Boot for Apache
|
||||
</dependency>
|
||||
----
|
||||
|
||||
With the _Spring Boot for Apache Geode_ dependency (i.e. `org.springframework.geode:spring-geode-starter`)
|
||||
With the _Spring Boot for {geode-name}_ dependency (i.e. `org.springframework.geode:spring-geode-starter`)
|
||||
on the application classpath along with the main Java class being a proper Spring Boot application, this application
|
||||
will startup and run as an Apache Geode `ClientCache` application:
|
||||
will startup and run as an {geode-name} `ClientCache` application:
|
||||
|
||||
.Application log output
|
||||
[source,txt]
|
||||
@@ -634,17 +634,17 @@ Process finished with exit code 0
|
||||
----
|
||||
|
||||
First, you see the JVM bootstrap Spring Boot, which in turn runs our `CrmApplication` and also auto-configures
|
||||
and bootstraps an Apache Geode `ClientCache` instance. Most of the output comes from Apache Geode.
|
||||
and bootstraps an {geode-name} `ClientCache` instance. Most of the output comes from {geode-name}.
|
||||
|
||||
The application falls straight through because it is not doing anything interesting, and technically, because there are
|
||||
no non-daemon Threads (e.g. Socket Thread listening on HTTP port 8080 in the case of Web applications running
|
||||
an embedded Servlet Container like Apache Tomcat) that prevents the "main" Java Thread from exiting immediately.
|
||||
|
||||
[[spring-geode-samples-getting-started-build-app]]
|
||||
== Build a Spring Boot, Apache Geode `ClientCache` application
|
||||
== Build a Spring Boot, {geode-name} `ClientCache` application
|
||||
|
||||
Our Spring Boot application is a simple _Customer Relationship Management_ (CRM) application that allows users
|
||||
to persist `Customer` data in Apache Geode and lookup `Customers` by name.
|
||||
to persist `Customer` data in {geode-name} and lookup `Customers` by name.
|
||||
|
||||
[[spring-geode-samples-getting-started-build-app-model]]
|
||||
=== `Customer` class
|
||||
@@ -660,15 +660,15 @@ include::{samples-dir}/intro/getting-started/src/main/java/example/app/crm/model
|
||||
The CRM application defines a `Customer` in terms of an identifier (i.e. `Long id`) and a name (i.e. `String name`).
|
||||
Both fields are required.
|
||||
|
||||
Additionally, we map `Customer` objects to the "_/Customers_" Region using Spring Data for Apache Geode's (SDG)
|
||||
Additionally, we map `Customer` objects to the "_/Customers_" Region using Spring Data for {geode-name}'s (SDG)
|
||||
{spring-data-geode-javadoc}/org/springframework/data/gemfire/mapping/annotation/Region.html[`@Region`] annotation.
|
||||
|
||||
The `@Region` annotation tells Spring Data where to persist and access `Customer` objects in Apache Geode. It is
|
||||
The `@Region` annotation tells Spring Data where to persist and access `Customer` objects in {geode-name}. It is
|
||||
basically equivalent to JPA's `@javax.persistence.Table` annotation.
|
||||
|
||||
Additionally, we annotate the `Long id` field with Spring Data's `@org.springframework.data.annotation.Id` annotation.
|
||||
This designates the `id` field as the identifier, or in Apache Geode's case, the "key" since a Region is a key/value
|
||||
store. In fact, Apache Geode's {apache-geode-javadoc}/org/apache/geode/cache/Region.html[`Region`] interface
|
||||
This designates the `id` field as the identifier, or in {geode-name}'s case, the "key" since a Region is a key/value
|
||||
store. In fact, {geode-name}'s {apache-geode-javadoc}/org/apache/geode/cache/Region.html[`Region`] interface
|
||||
implements the `java.uti.Map` interface making it a `Map` data structure.
|
||||
|
||||
We use https://projectlombok.org/[Project Lombok] to simply the implementation of the `Customer` class.
|
||||
@@ -683,7 +683,7 @@ subjective topic on whether to use Lombok in production code. We have no opinio
|
||||
=== `CustomerRepository` interface
|
||||
|
||||
Now that we have defined a basic model for managing customer data, we can create a Spring Data `CrudRepository` used by
|
||||
our application to persist `Customer` objects to Apache Geode. This same _Repository_ can be used to lookup, or query
|
||||
our application to persist `Customer` objects to {geode-name}. This same _Repository_ can be used to lookup, or query
|
||||
`Customers` by name.
|
||||
|
||||
.`CustomerRepository` interface
|
||||
@@ -697,7 +697,7 @@ that enables an application to perform basic CRUD (i.e. CREATE, READ, UPDATE, DE
|
||||
data access operations on a persistent entity (e.g. `Customer`).
|
||||
|
||||
TIP: Review the Spring Data Commons Reference Guide for more details on {spring-data-commons-docs}/#repositories[Working with Spring Data Repositories]
|
||||
and Spring Data for Apache Geode's (SDG) {spring-data-geode-docs}/#gemfire-repositories[extension and implementation]
|
||||
and Spring Data for {geode-name}'s (SDG) {spring-data-geode-docs}/#gemfire-repositories[extension and implementation]
|
||||
of Spring Data Commons Repository Abstraction.
|
||||
|
||||
[[spring-geode-samples-getting-started-build-app-controller]]
|
||||
@@ -731,7 +731,7 @@ for accessing the CRM application via a Web client (e.g. Web browser).
|
||||
|===
|
||||
|
||||
NOTE: If you did not enable the Web components by adding the Spring Web dependency to your application classpath, then
|
||||
no worries, we will still be inspecting the application's effects on Apache Geode using _Gfsh_ (Apache Geode & Pivotal
|
||||
no worries, we will still be inspecting the application's effects on {geode-name} using _Gfsh_ ({geode-name} & Pivotal
|
||||
GemFire's shell tool). Of course, you can just add the `org.springframework.boot:spring-boot-starter-web` dependency
|
||||
to your Maven POM file as well.
|
||||
|
||||
@@ -755,7 +755,7 @@ responsibility as the application developer. One example is Region configuratio
|
||||
There are many ways to configure a Region and it varies significantly from application Use Case to application Use Case.
|
||||
|
||||
First, there are different data management policies (e.g. `PARTITION` or `REPLICATE`) that might be applicable depending
|
||||
on the type of data you store in Apache Geode (e.g. Transactional vs. Reference data). You might need different
|
||||
on the type of data you store in {geode-name} (e.g. Transactional vs. Reference data). You might need different
|
||||
Eviction and Expiration policies depending on your user base or workloads. Some data is suited for Off-Heap memory.
|
||||
Depending on the data management policy of the Region (e.g. `PARTITION`) you can configure additional per node and total
|
||||
Region memory usage restrictions, collocate the Region with another Region for use in JOIN Queries, etc.
|
||||
@@ -765,7 +765,7 @@ especially during development. So, while SBDG may not provide implicit _auto-co
|
||||
this does not mean you are left to figure it all out by yourself (e.g. Region configuration).
|
||||
|
||||
During development, if you don't care specifically "_how_" your data is stored and you just want to simply and rapidly
|
||||
iterate, putting and getting data into and out of Apache Geode, then SBDG can help.
|
||||
iterate, putting and getting data into and out of {geode-name}, then SBDG can help.
|
||||
|
||||
The first thing we will do is annotate our application configuration with SDG's `@EnableEntityDefinedRegions` annotation
|
||||
and set the `basePackageClasses` attribute to our `Customer` class:
|
||||
@@ -822,12 +822,12 @@ You can also use Spring XML:
|
||||
==== Configure the Application to be Cluster-Aware
|
||||
|
||||
The final bit of configuration helps determine whether the client application is by itself or whether a cluster of
|
||||
Apache Geode servers are available to manage the application's data.
|
||||
{geode-name} servers are available to manage the application's data.
|
||||
|
||||
During development, you might be iteratively and rapidly developing inside your IDE, debugging and testing new functions
|
||||
locally and then switch to a client/server environment for further integration testing.
|
||||
|
||||
Apache Geode requires 1) all client Regions that send data to/from the cluster be `*PROXY` Regions and 2) that a
|
||||
{geode-name} requires 1) all client Regions that send data to/from the cluster be `*PROXY` Regions and 2) that a
|
||||
server-side Region by the same name exists in the cluster.
|
||||
|
||||
Switching the data management policy for all client Regions' from `*PROXY` to `LOCAL` when pulling your application code
|
||||
@@ -887,7 +887,7 @@ to our main `@SpringBootApplication` class:
|
||||
include::{samples-dir}/intro/getting-started/src/main/java/example/app/crm/CrmApplication.java[tags=runner]
|
||||
----
|
||||
|
||||
The runner creates a new `Customer` "_JonDoe_", persists "_JonDoe_" to Apache Geode in the "_/Customers_" client `LOCAL`
|
||||
The runner creates a new `Customer` "_JonDoe_", persists "_JonDoe_" to {geode-name} in the "_/Customers_" client `LOCAL`
|
||||
Region, runs an OQL query to lookup "_JonDoe_" by name using a wildcard query with the LIKE operator and argument
|
||||
"_%Doe_", then asserts that the result is correct.
|
||||
|
||||
@@ -942,7 +942,7 @@ Customer was [Customer(name=JonDoe)]
|
||||
SBDG, with the help of `@EnableEntityDefinedRegions` and `@EnableClusterAware`, along with Spring Data, has already done
|
||||
quite a bit of work for us:
|
||||
|
||||
1. SBDG _auto-configured_ a `ClientCache` instance required to use Apache Geode in the application.
|
||||
1. SBDG _auto-configured_ a `ClientCache` instance required to use {geode-name} in the application.
|
||||
2. The `@EnableEntityDefinedRegion` annotation created the required "_/Customers_" client Region from our `Customer`
|
||||
entity class.
|
||||
3. SBDG _auto-configured_ the Spring Data Repository infrastructure and supplied an implementation for
|
||||
@@ -1019,21 +1019,21 @@ image::{images-dir}/customer-service-application-jondoe.png[]
|
||||
[[spring-geode-samples-getting-started-run-app-clientserver]]
|
||||
== Run the Application in a Client/Server Topology
|
||||
|
||||
Now that we have a simple Spring Boot, Apache Geode `ClientCache` application running locally inside our IDE, we want to
|
||||
Now that we have a simple Spring Boot, {geode-name} `ClientCache` application running locally inside our IDE, we want to
|
||||
expand on this bit and switch to a client/server topology.
|
||||
|
||||
Although we are not quite ready to move to a managed cloud platform environment, like _Pivotal Platform_ (formerly
|
||||
known as _Pivotal CloudFoundry_) using _Pivotal Cloud Cache_ (PCC), we no longer want to maintain the data locally.
|
||||
known as _Pivotal CloudFoundry_) using _{cloudcache-name}_ (PCC), we no longer want to maintain the data locally.
|
||||
|
||||
Without persistence, we would lose all our data if the client application were shutdown since the data is maintained
|
||||
in-memory. Additionally, by maintaining the data locally, other client applications, or even other instances of our
|
||||
existing application (e.g. in a Microservices landscape) would not be able to use this data, which is useless!
|
||||
|
||||
To switch to a client/server topology, we need to first configure and bootstrap an Apache Geode cluster.
|
||||
To switch to a client/server topology, we need to first configure and bootstrap an {geode-name} cluster.
|
||||
|
||||
The Example Code for this Guide already provides the necessary Geode shell script (_Gfsh_) to start a cluster:
|
||||
|
||||
.Gfsh shell script to start an Apache Geode cluster
|
||||
.Gfsh shell script to start an {geode-name} cluster
|
||||
[source,txt]
|
||||
----
|
||||
include::{samples-dir}/intro/getting-started/src/main/resources/geode/bin/start-cluster.gfsh[]
|
||||
@@ -1049,7 +1049,7 @@ gfsh> run --file=@SBDG_HOME@/spring-geode-samples/intro/getting-started/src/main
|
||||
|
||||
NOTE: Be sure to change the `@SBDG_HOME@` placeholder variable with the location of your cloned copy of SBDG.
|
||||
|
||||
The _Gfsh_ shell script starts an Apache Geode cluster with 1 _Locator_ and 2 _Servers_.
|
||||
The _Gfsh_ shell script starts an {geode-name} cluster with 1 _Locator_ and 2 _Servers_.
|
||||
|
||||
The output from the shell script will look similar to:
|
||||
|
||||
@@ -1256,7 +1256,7 @@ the best data management policy and organization for transactional data. The "_
|
||||
on our 2 _Servers_, "ServerOne" and "ServerTwo".
|
||||
|
||||
WARNING: You must have redundancy (and optionally, persistence) configured in your cluster to prevent (complete)
|
||||
data loss, which forms the basis for high-availability (HA) in Apache Geode and Pivotal Cloud Cache (PCC).
|
||||
data loss, which forms the basis for high-availability (HA) in {geode-name} and {cloudcache-name} (PCC).
|
||||
|
||||
We can query "_JonDoe_" from _Gfsh_:
|
||||
|
||||
@@ -1348,10 +1348,10 @@ Once again, SBDG is providing you with tremendous power and convenience that you
|
||||
While there are very apparent things happening, there are also a few non-apparent things happening as well.
|
||||
In addition to the aforementioned things in the last section, we are now benefiting from:
|
||||
|
||||
1. SBDG appropriately configured and relied on Apache Geode internal features to connect the client to the cluster.
|
||||
1. SBDG appropriately configured and relied on {geode-name} internal features to connect the client to the cluster.
|
||||
2. Configuration metadata for our application's required client Regions (e.g. "_/Customers_") was sent to the cluster
|
||||
and created on the servers to leverage the client/server topology.
|
||||
3. SBDG _auto-configured_ PDX, Apache Geode's highly powerful Serialization framework and alternative to
|
||||
3. SBDG _auto-configured_ PDX, {geode-name}'s highly powerful Serialization framework and alternative to
|
||||
_Java Serialization_.
|
||||
|
||||
Once we migrate to a managed cloud platform environment, we'll see the full effects of SBDG's _auto-configuration_
|
||||
@@ -1361,14 +1361,14 @@ at play.
|
||||
*****
|
||||
Anytime you need to send data over the network, persist or overflow data to disk, your objects need to be serializable.
|
||||
|
||||
SBDG employs Apache Geode's {apache-geode-docs}/developing/data_serialization/gemfire_pdx_serialization.html[PDX Serialization]
|
||||
SBDG employs {geode-name}'s {apache-geode-docs}/developing/data_serialization/gemfire_pdx_serialization.html[PDX Serialization]
|
||||
framework so your application entity classes do not need to implement `java.io.Serializable`. In other cases,
|
||||
implementing `java.io.Serializable` may not even be possible if your application domain types are composed of types
|
||||
from 3rd party libraries for which you have no control over.
|
||||
|
||||
Perhaps you don't want to use _Java Serialization_ given the inherit overhead of the _Java Serialization_ format.
|
||||
|
||||
In any case, using Apache Geode PDX Serialization is ideal if you have large number of objects forming a complex graph
|
||||
In any case, using {geode-name} PDX Serialization is ideal if you have large number of objects forming a complex graph
|
||||
where missing a type that needs to be serialized is easy to do. PDX allows you to query data in serialized form
|
||||
and even allows non-Java clients (e.g. native clients written in C#/C++) to access the same data.
|
||||
|
||||
@@ -1491,7 +1491,7 @@ gfsh> create region --name=Example --type=PARTITION ...
|
||||
|
||||
While this can be scripted and the script can be checked into source control (a definitive plus) the same as
|
||||
the application code, you sill need to create matching Regions on the client, for which there is no assistance
|
||||
provided by Apache Geode or Pivotal Cloud Cache.
|
||||
provided by {geode-name} or {cloudcache-name}.
|
||||
|
||||
This is why `@EnableClusterAware` will help you be much more productive during development. After you are ready to
|
||||
promote the application to the next environment, it is a simple matter to {apache-geode-docs}/tools_modules/gfsh/command-pages/export.html#topic_mdv_jgz_ck[export]
|
||||
@@ -1508,16 +1508,16 @@ Again, this is highly recommended in practice.
|
||||
== Run the Application in a Cloud Platform Environment
|
||||
|
||||
Now that we have built and ran our application locally as well as in a client/server topology, we are ready to push
|
||||
the application to a managed cloud platform environment, like _Pivotal Platform_ using _Pivotal Cloud Cache_ (PCC).
|
||||
the application to a managed cloud platform environment, like _Pivotal Platform_ using _{cloudcache-name}_ (PCC).
|
||||
|
||||
This is the final step in our journey to the cloud and SBDG makes this a non-event!
|
||||
|
||||
While SBDG handles most application development concerns, _Pivotal Cloud Cache_ (PCC), in conjunction with
|
||||
While SBDG handles most application development concerns, _{cloudcache-name}_ (PCC), in conjunction with
|
||||
_Pivotal Platform_, handles most operational concerns.
|
||||
|
||||
.Using Pivotal Platform
|
||||
*****
|
||||
To deploy this application to _Pivotal Platform_ and use _Pivotal Cloud Cache_ (PCC), you will need access to
|
||||
To deploy this application to _Pivotal Platform_ and use _{cloudcache-name}_ (PCC), you will need access to
|
||||
a _Pivotal Platform_ environment (e.g. PWS) with the PCC tile installed.
|
||||
|
||||
Please see https://run.pivotal.io/[Pivotal Web Services] (PWS) website for more details on how to get started.
|
||||
@@ -1530,10 +1530,10 @@ See link:../index.html#cloudfoundry-geode[Hybrid Cloud Environments] for more de
|
||||
Once you have acquired a _Pivotal Platform_ environment and installed the required tools (e.g. CF CLI), then you can
|
||||
package the application and deploy (i.e. "_push_") it to _Pivotal Platform_.
|
||||
|
||||
Before we package the application, we must switch the "_Spring (Boot) for Apache Geode_" dependency in our application
|
||||
Before we package the application, we must switch the "_Spring (Boot) for {geode-name}_" dependency in our application
|
||||
Maven POM file from:
|
||||
|
||||
.Spring Boot for Apache Geode dependency
|
||||
.Spring Boot for {geode-name} dependency
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -1546,7 +1546,7 @@ Maven POM file from:
|
||||
|
||||
To:
|
||||
|
||||
.Spring Boot for Pivotal GemFire (a.k.a. Pivotal Cloud Cache (PCC)) dependency
|
||||
.Spring Boot for {gemfire-name} (a.k.a. {cloudcache-name} (PCC)) dependency
|
||||
[source,xml]
|
||||
[subs="verbatim,attributes"]
|
||||
----
|
||||
@@ -1594,23 +1594,23 @@ is the server-side.
|
||||
|
||||
.Acquiring {cloudcache-name} Bits
|
||||
*****
|
||||
In order to acquire the Pivotal Cloud Cache (PCC) / Pivotal GemFire bits used by your Spring Boot application, you must
|
||||
In order to acquire the {cloudcache-name} (PCC) / {gemfire-name} bits used by your Spring Boot application, you must
|
||||
sign up and register on https://network.pivotal.io/[Pivotal Network] (a.k.a. "_PivNet_").
|
||||
|
||||
This should include instructions on how to configure your application Maven POM file with the necessary `<repository>`
|
||||
declaration for acquiring the _Pivotal Cloud Cache_ / Pivotal GemFire bits pulled in by the
|
||||
declaration for acquiring the _{cloudcache-name}_ / {gemfire-name} bits pulled in by the
|
||||
`org.springframework.geode:spring-gemfire-starter` SBDG application dependency as well as the necessary settings in
|
||||
`~/.m2/settings.xml` to authenticate and access the Pivotal Commercial Repository server.
|
||||
|
||||
This is absolutely necessary since Pivotal Cloud Cache (PCC) / Pivotal GemFire bits are not available in _Maven Central_.
|
||||
This is absolutely necessary since {cloudcache-name} (PCC) / {gemfire-name} bits are not available in _Maven Central_.
|
||||
|
||||
You can also find more details on acquiring the bits in the Pivotal GemFire
|
||||
You can also find more details on acquiring the bits in the {gemfire-name}
|
||||
https://gemfire.docs.pivotal.io/{pivotal-gemfire-version}/gemfire/getting_started/installation/obtain_gemfire_maven.html[documentation].
|
||||
*****
|
||||
|
||||
.Required Spring Boot Actuator Bits
|
||||
*****
|
||||
As of Apache Geode 1.9 and Pivotal GemFire 9.8, upon which Pivotal Cloud Cache (PCC) 1.8 is {pivotal-cloudcache-docs}/product-snapshot.html[based],
|
||||
As of {geode-name} 1.9 and {gemfire-name} 9.8, upon which {cloudcache-name} (PCC) 1.8 is {pivotal-cloudcache-docs}/product-snapshot.html[based],
|
||||
both GemFire and Geode require and declare Micrometer on the classpath as a compile-time dependency.
|
||||
|
||||
Technically, the Micrometer bits are pulled in by `org.apache.geode:geode-core:1.9.0` and the Micrometer version
|
||||
@@ -1626,7 +1626,7 @@ is determined by the version of Spring Boot you are using:
|
||||
|
||||
As of this writing, due to an https://github.com/cloudfoundry/java-buildpack-metric-writer/issues/6[Issue]
|
||||
in the _Java buildpack_ for CloudFoundry, you are also required to put Spring Boot Actuator on the classpath
|
||||
for your Spring Boot application using Apache Geode or PCC:
|
||||
for your Spring Boot application using {geode-name} or PCC:
|
||||
|
||||
.Declaring Spring Boot Actuator on the application classpath
|
||||
[source.xml]
|
||||
@@ -1655,7 +1655,7 @@ OUT at o.s.c.a.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:403)
|
||||
...
|
||||
----
|
||||
|
||||
On the other hand, if you try to exclude Micrometer from the Apache Geode or PCC dependency, for example:
|
||||
On the other hand, if you try to exclude Micrometer from the {geode-name} or PCC dependency, for example:
|
||||
|
||||
.Excluding the Micrometer dependency from `spring-gemfire-starter`
|
||||
[source,txt]
|
||||
@@ -1675,9 +1675,9 @@ On the other hand, if you try to exclude Micrometer from the Apache Geode or PCC
|
||||
----
|
||||
|
||||
Then, you will get past the _Java buildpack_ Exception, but you will encounter another Exception when Spring Boot
|
||||
tries to bootstrap Apache Geode on startup:
|
||||
tries to bootstrap {geode-name} on startup:
|
||||
|
||||
.Exception in Apache Geode
|
||||
.Exception in {geode-name}
|
||||
[source,txt]
|
||||
----
|
||||
[OUT] Caused by: java.lang.NoClassDefFoundError: io/micrometer/core/instrument/MeterRegistry
|
||||
@@ -1685,7 +1685,7 @@ tries to bootstrap Apache Geode on startup:
|
||||
----
|
||||
|
||||
Therefore, you must include Spring Boot Actuator on your Spring Boot application classpath when deploying
|
||||
to Pivotal Platform and using Pivotal Cloud Cache (PCC). Again, the easiest way to do that is include the
|
||||
to Pivotal Platform and using {cloudcache-name} (PCC). Again, the easiest way to do that is include the
|
||||
`org.springframework.geode:spring-gemfire-starter-actuator` dependency on your application classpath.
|
||||
*****
|
||||
|
||||
@@ -1874,12 +1874,12 @@ Again, we see the "_crm-app_". You can click on the app name and drill in to ge
|
||||
image::{images-dir}/pvtl-appsmanager-org-space-apps-crm-app-overview.png[]
|
||||
|
||||
If you click on "_Service (1)_" in the left navigation bar, you will see that the "_crm-app_" is bound to
|
||||
the "_pccServiceOne_" Pivotal Cloud Cache service instance:
|
||||
the "_pccServiceOne_" {cloudcache-name} service instance:
|
||||
|
||||
image::{images-dir}/pvtl-appsmanager-org-space-apps-crm-app-service.png[]
|
||||
|
||||
If you click on "_Settings_" in the left navigation bar and "REVEAL ENV VARS" you will find the "_Gfsh login string_"
|
||||
that you can use to connect to the Pivotal Cloud Cache cluster using _Gfsh_ from your local development environment:
|
||||
that you can use to connect to the {cloudcache-name} cluster using _Gfsh_ from your local development environment:
|
||||
|
||||
image::{images-dir}/pvtl-appsmanager-org-space-apps-crm-app-settings.png[]
|
||||
|
||||
@@ -1993,13 +1993,13 @@ id | name
|
||||
1 | JonDoe
|
||||
----
|
||||
|
||||
You successfully deployed the CRM, Spring Boot Apache Geode/Pivotal Cloud Cache `ClientCache` application to the cloud!
|
||||
You successfully deployed the CRM, Spring Boot {geode-name}/{cloudcache-name} `ClientCache` application to the cloud!
|
||||
|
||||
In this final incarnation of our CRM, Spring Boot application, SBDG yet again handled many different concerns for us
|
||||
so we did not need to. This is in addition to all the things mentioned above when running the application locally
|
||||
as well as running the application using a client/server topology. Now, we also benefit from:
|
||||
|
||||
1. SBDG figures out the connection criteria needed to connect your client to the servers in the Pivotal Cloud Cache
|
||||
1. SBDG figures out the connection criteria needed to connect your client to the servers in the {cloudcache-name}
|
||||
(PCC) cluster, which is technically extracted from the VCAP environment. SBDG will connect the Spring Boot app to
|
||||
the PCC Locators.
|
||||
2. SBDG automatically authenticates your Spring Boot app with the PCC cluster providing your app was correctly bound to
|
||||
@@ -2020,10 +2020,10 @@ specifically cover the details of doing so in this guide.
|
||||
|
||||
Running in a Hybrid Cloud Environment specifically means deploying your CRM, Spring Boot `ClientCache` application to
|
||||
a managed cloud platform environment, such as Pivotal Platform, but connect the app to an externally managed
|
||||
Apache Geode or Pivotal GemFire cluster, i.e. the GemFire/Geode cluster is running and managed off platform.
|
||||
{geode-name} or {gemfire-name} cluster, i.e. the GemFire/Geode cluster is running and managed off platform.
|
||||
|
||||
NOTE: As of this writing, the inverse is also being explored, running your Spring Boot applications off platform,
|
||||
but connecting those apps to managed data services (e.g. Pivotal Cloud Cache (PCC)) on platform.
|
||||
but connecting those apps to managed data services (e.g. {cloudcache-name} (PCC)) on platform.
|
||||
|
||||
There may be cases where you are unable to move your data management architecture for your applications entirely to
|
||||
the cloud. In those cases, SBDG supports a Hybrid Cloud Architecture, that is both an on-prem and off-prem arrangement.
|
||||
@@ -2036,10 +2036,10 @@ link:../index.html#cloudfoundry-geode[here].
|
||||
[[spring-geode-samples-getting-started-summary]]
|
||||
== Summary
|
||||
|
||||
In this guide, we saw first-hand the power of Spring Boot for Apache Geode (SBDG) when building Apache Geode powered
|
||||
In this guide, we saw first-hand the power of Spring Boot for {geode-name} (SBDG) when building {geode-name} powered
|
||||
Spring Boot applications.
|
||||
|
||||
Apache Geode can truly make your Spring Boot applications highly resilient to failures, highly available, performant
|
||||
{geode-name} can truly make your Spring Boot applications highly resilient to failures, highly available, performant
|
||||
(i.e. high throughput and low latency), without sacrificing consistency, which is paramount to any data intensive
|
||||
application.
|
||||
|
||||
@@ -2047,7 +2047,7 @@ SBDG handles a lot of low-level application concerns so you do not have to. You
|
||||
can remain on building the application to meet your customers' needs, collect feedback, iterate rapidly, and realize
|
||||
the value proposition sooner.
|
||||
|
||||
Indeed, our intended goal is to make developing Apache Geode applications with Spring, and Spring Boot in particular,
|
||||
Indeed, our intended goal is to make developing {geode-name} applications with Spring, and Spring Boot in particular,
|
||||
a highly productive and enjoyable experience.
|
||||
|
||||
We hope you enjoy!
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<productname>Spring Boot for Apache Geode & Pivotal GemFire</productname>
|
||||
<productname>Spring Boot for Apache Geode & VMware Tanzu GemFire</productname>
|
||||
<releaseinfo>{spring-boot-data-geode-version}</releaseinfo>
|
||||
<copyright>
|
||||
<year>2020</year>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[[spring-boot-data-geode]]
|
||||
= Spring Boot for Apache Geode & Pivotal GemFire Reference Guide
|
||||
= Spring Boot for Apache Geode & VMware Tanzu GemFire Reference Guide
|
||||
John Blum
|
||||
:revdate: {localdate}
|
||||
:revnumber: {version}
|
||||
@@ -19,6 +19,7 @@ John Blum
|
||||
:apache-geode-javadoc: https://geode.apache.org/releases/latest/javadoc
|
||||
:apache-geode-website: https://geode.apache.org/
|
||||
:apache-geode-wiki: https://cwiki.apache.org/confluence/display/GEODE
|
||||
:pivotal-cloudcache-name: VMware Tanzu GemFire for VMs
|
||||
:pivotal-cloudcache-version: {pivotal-cloudcache-doc-version}
|
||||
:pivotal-cloudcache-docs: https://docs.pivotal.io/p-cloud-cache/{pivotal-cloudcache-version}
|
||||
:pivotal-cloudcache-website: https://pivotal.io/pivotal-cloud-cache
|
||||
@@ -259,7 +260,3 @@ include::{include-dir}/cloudfoundry.adoc[]
|
||||
include::{include-dir}/docker.adoc[]
|
||||
include::{include-dir}/samples.adoc[]
|
||||
include::{include-dir}/appendix.adoc[]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.geode.config.annotation.UseLocators;
|
||||
|
||||
/**
|
||||
* The {@link SpringBootApacheGeodeLocatorApplication} class is a Spring Boot application that configures and bootstraps
|
||||
* an Apache Geode or Pivotal GemFire {@link Locator} application JVM process.
|
||||
* an Apache Geode {@link Locator} application JVM process.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.distributed.Locator
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Security Configuration for Apache Geode/Pivotal GemFire using Spring Boot and Spring Data GemFire properties
|
||||
# Security Configuration for Apache Geode using Spring Boot and Spring Data for Apache Geode properties
|
||||
|
||||
spring.boot.data.gemfire.security.ssl.keystore.name=example-trusted-keystore.jks
|
||||
spring.data.gemfire.security.username=test
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Configuration for Apache Geode/Pivotal GemFire using Spring Boot and Spring Data GemFire properties
|
||||
# Configuration for Apache Geode using Spring Boot and Spring Data for Apache Geode properties
|
||||
|
||||
spring.application.name=CustomerServiceApplication
|
||||
spring.data.gemfire.cache.log-level=error
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.apache.geode.cache.EntryEvent;
|
||||
import org.apache.geode.cache.RegionEvent;
|
||||
|
||||
/**
|
||||
* Class supporting the implementation of Apache Geode / Pivotal GemFire (PCC) {@link CacheWriter CacheWriters}.
|
||||
* Class supporting the implementation of Apache Geode {@link CacheWriter CacheWriters}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.apache.geode.cache.CacheWriter
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Abstract base class supporting the implementation of Apache Geode / Pivotal GemFire {@link CacheLoader CacheLoaders}
|
||||
* Abstract base class supporting the implementation of Apache Geode {@link CacheLoader CacheLoaders}
|
||||
* and {@link CacheWriter CacheWriters} backed by Spring Data {@link Repository Repositories}.
|
||||
*
|
||||
* @author John Blum
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.data.gemfire.config.annotation.EnableClusterConfigura
|
||||
|
||||
/**
|
||||
* The {@link ClusterAvailableConfiguration} class is a Spring {@link Configuration @Configuration} class that enables
|
||||
* configuration when an Apache Geode or Pivotal GemFire cluster of servers are available.
|
||||
* configuration when an Apache Geode cluster of servers are available.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.boot.autoconfigure.condition.AnyNestedCondition
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
* The {@link ClusterNotAvailableConfiguration} class is a Spring {@link Configuration @Configuration} class that
|
||||
* enables configuration when an Apache Geode or Pivotal GemFire cluster of servers is not available.
|
||||
* enables configuration when an Apache Geode cluster of servers is not available.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.beans.factory.config.BeanPostProcessor
|
||||
|
||||
@@ -25,9 +25,8 @@ import java.lang.annotation.Target;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
/**
|
||||
* The {@link EnableClusterAware} helps an Spring Boot application using Apache Geode (or Pivotal GemFire
|
||||
* / Pivotal Cloud Cache (PCC)) decide whether it needs to operate in {@literal local-only mode}
|
||||
* or {@literal client/server}.
|
||||
* The {@link EnableClusterAware} helps an Spring Boot application using Apache Geode decide whether it needs to operate
|
||||
* in {@literal local-only mode} or {@literal client/server}.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.lang.annotation.Annotation
|
||||
|
||||
@@ -26,7 +26,7 @@ import java.lang.annotation.Target;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
/**
|
||||
* Spring {@link Annotation} to enable Apache Geode or Pivotal GemFire (PCC) Security (Auth).
|
||||
* Spring {@link Annotation} to enable Apache Geode Security (Auth).
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.lang.annotation.Annotation
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user