126 lines
8.0 KiB
Plaintext
126 lines
8.0 KiB
Plaintext
:version: 3.0.0-M5
|
|
:geode-version: 115
|
|
|
|
image:https://badges.gitter.im/spring-projects/spring-session.svg[link="https://gitter.im/spring-projects/spring-session?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"]
|
|
|
|
image:https://travis-ci.org/spring-projects/spring-session.svg?branch=master["Build Status", link="https://travis-ci.org/spring-projects/spring-session-data-geode"]
|
|
|
|
[[ssdg]]
|
|
== Spring Session for Apache Geode
|
|
|
|
_Spring Session_ core provides an API along with several provider implementations to manage user sessions. It also
|
|
simplifies the support for clustered session state management without being tied to an application container
|
|
specific solution.
|
|
|
|
[[notice]]
|
|
== NOTICE
|
|
|
|
[[notice-2023-january]]
|
|
*2023-January-17*:
|
|
|
|
At the end of 2022, VMware https://tanzu.vmware.com/content/blog/spring-for-vmware-gemfire-is-now-available[announced]
|
|
the general availability of the Spring for VMware GemFire portfolio of projects.
|
|
|
|
While these Spring based projects for VMware GemFire are open source and a succession to the Spring for Apache Geode
|
|
projects, they are not a replacement. VMware GemFire forked from the Apache Geode project and is not open source.
|
|
Additionally, newer Apache Geode and VMware GemFire clients are not backwards compatible with older Apache Geode
|
|
and VMware GemFire servers. You can begin the transition by starting https://docs.vmware.com/en/Spring-Session-for-VMware-GemFire/index.html[here].
|
|
|
|
Alternatively, the Spring portfolio provides first-class https://spring.io/projects/spring-session[integration]
|
|
with other comparable session caching providers. Also, see https://docs.spring.io/spring-session/reference/modules.html[here].
|
|
|
|
Finally, keep in mind, the Spring for Apache Geode projects will still be maintained until OSS and commercial support
|
|
ends. Maintenance will only include CVE and critical fixes. No new features or major enhancements will be made.
|
|
The Spring Session for Apache Geode support timelines can be viewed https://spring.io/projects/spring-session#support[here].
|
|
|
|
[[notice-2022-october]]
|
|
*2022-October-24*:
|
|
|
|
See the October 24th https://github.com/spring-projects/spring-data-geode#notice[NOTICE]
|
|
on the _Spring Data for Apache Geode_ GitHub project page for complete details.
|
|
|
|
[[project-features]]
|
|
== Features
|
|
|
|
Out of the box _Spring Session_ provides integration with:
|
|
|
|
* `HttpSession` - replaces the `HttpSession` supplied by the application container (e.g. Apache Tomcat)
|
|
in a neutral way along with providing HTTP Session IDs in the HTTP Header to work with REST APIs.
|
|
|
|
* `WebSocket` - keeps the `HttpSession` active when receiving WebSocket messages.
|
|
|
|
On top of the core _Spring Session_ features, _Spring Session for Apache Geode and VMware Tanzu GemFire_ (SSDG)
|
|
positions either https://geode.apache.org/[Apache Geode] or https://pivotal.io/pivotal-gemfire[VMware Tanzu GemFire]
|
|
as a session repository provider and adds additional capabilities required by enterprise class solutions:
|
|
|
|
* Custom `Expiration Policies` - in addition to the default, 30 minute session _idle expiration timeout_ (TTI), which
|
|
is configurable, SSDG also supports _fixed-duration expiration timeout_ (e.g. expire the session after 1 hour
|
|
regardless of whether the session is active or inactive). Users may also define custom expiration policies using the
|
|
https://docs.spring.io/autorepo/docs/spring-session-data-geode-build/{version}/api/org/springframework/session/data/gemfire/expiration/SessionExpirationPolicy.html[`SessionExpirationPolicy`] interface.
|
|
See the https://docs.spring.io/autorepo/docs/spring-session-data-geode-build/{version}/reference/html5/#httpsession-gemfire-expiration[documentation] for more details.
|
|
|
|
* Custom `Data Serialization` - in addition to the default Apache Geode https://geode.apache.org/docs/guide/{geode-version}/developing/data_serialization/gemfire_pdx_serialization.html[PDX Serialization] format,
|
|
users may configure Apache Geode https://geode.apache.org/docs/guide/{geode-version}/developing/data_serialization/gemfire_data_serialization.html[Data Serialization]
|
|
with full support for https://geode.apache.org/docs/guide/{geode-version}/developing/delta_propagation/chapter_overview.html[Delta Propagation].
|
|
While _race conditions_ between competing HTTP requests (accessing the same HTTP Session) cannot be completely avoided with
|
|
any session provider, sending only the delta (or changes) minimizes the chance of _lost updates_, especially in a highly clustered
|
|
Web environment. By using PDX Serialization, your HTTP Session state is immediately transferable across environments, from non-managed,
|
|
standalone environments to managed environments, like https://pivotal.io/platform[Pivotal Cloud Foundry (PCF)]
|
|
using https://pivotal.io/platform/services-marketplace/data-management/pivotal-cloud-cache[Pivotal Cloud Cache (PCC)].
|
|
|
|
* Custom `Change Detection` - while most session implementations consider the session to be dirty anytime anything is written
|
|
to the session, even when your application domain objects stored in the session have not changed, SSDG will intelligently
|
|
determine whether there is anything to send before writing it to the wire. OOTB, SSDG will look at any application domain objects
|
|
that implement Apache Geode's https://geode.apache.org/releases/latest/javadoc/org/apache/geode/Delta.html[Delta] interface
|
|
and use that to determine if your application domain objects are indeed dirty before sending the delta. If your objects do not
|
|
implement the `Delta` interface, or the object is not the same, then it functions like all other Spring Session providers.
|
|
If you prefer, you may specify your own rules composed with the `IsDirtyPredicate` strategy interface.
|
|
|
|
* Powerful `Pub/Sub` - Apache Geode and VMware Tanzu GemFire both provide a very powerful and robust client/server
|
|
https://geode.apache.org/docs/guide/{geode-version}/developing/events/chapter_overview.html[event distribution and handling sub-system]
|
|
leveraged by SSDG in order to reliably manage session state, especially in a distributed/clustered environment.
|
|
|
|
These and many more Apache Geode or VMware Tanzu GemFire features may be leveraged in your application environment to
|
|
achieve resilient, highly available (HA), durable, consistent, and even multi-clustered (WAN), persistent
|
|
session statement management.
|
|
|
|
The best part, SSDG allows you to use either Apache Geode or VMware Tanzu GemFire interchangeably without having to change
|
|
a single line of code. Simply change your dependency from `org.springframework.session:spring-session-data-geode`
|
|
to `org.springframework.session:spring-session-data-gemfire`, or vice versa, and you can seemlessly move between
|
|
either Apache Geode or VMware Tanzu GemFire, or even PCC.
|
|
|
|
No other Spring Session provider offers you the same type of flexibility and power in 1 solution, especially as
|
|
your requirements and UC change (e.g. from simple session caching to a full on _System of Record_ with
|
|
_distributed compute_ and _streaming capabilities_).
|
|
|
|
[[website]]
|
|
== Spring Session Project Site
|
|
|
|
You can find the documentation, issue management, support, samples, and guides for using _Spring Session_
|
|
at https://projects.spring.io/spring-session/.
|
|
|
|
Additionally, you can find documentation, issue management, support, samples and guides using _Spring Session
|
|
for Apache Geode & VMware Tanzu GemFire_ at https://spring.io/projects/spring-session-data-geode.
|
|
|
|
[[documentation]]
|
|
=== Documentation
|
|
|
|
Documentation for _Spring Session for Apache Geode and VMware Tazu GemFire_ can be found
|
|
https://docs.spring.io/spring-session-data-geode/docs/current/reference/html5/[here]
|
|
and Javadoc is available https://docs.spring.io/spring-session-data-geode/docs/current/api/[here].
|
|
|
|
[[code-of-conduct]]
|
|
== Code of Conduct
|
|
|
|
Please see our https://github.com/spring-projects/.github/blob/master/CODE_OF_CONDUCT.md[code of conduct]
|
|
|
|
[[report-security-vulnerability]]
|
|
== Reporting Security Vulnerabilities
|
|
|
|
Please see our https://github.com/spring-projects/spring-session-data-geode/security/policy[Security policy].
|
|
|
|
[[license]]
|
|
== License
|
|
|
|
_Spring Session_ is Open Source Software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].
|