{"id":14972954,"url":"https://github.com/spring-projects/spring-session-data-geode","last_synced_at":"2025-07-17T03:35:39.725Z","repository":{"id":37664593,"uuid":"90164963","full_name":"spring-projects/spring-session-data-geode","owner":"spring-projects","description":"Spring Session support for Apache Geode and VMware Tanzu GemFire","archived":false,"fork":false,"pushed_at":"2023-11-20T21:10:00.000Z","size":3391,"stargazers_count":23,"open_issues_count":14,"forks_count":29,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-05T09:41:08.709Z","etag":null,"topics":["apache-geode","framework","java","spring-session"],"latest_commit_sha":null,"homepage":"https://projects.spring.io/spring-session/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spring-projects.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-05-03T15:32:34.000Z","updated_at":"2024-10-15T11:26:45.000Z","dependencies_parsed_at":"2023-11-20T21:45:47.825Z","dependency_job_id":null,"html_url":"https://github.com/spring-projects/spring-session-data-geode","commit_stats":null,"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"purl":"pkg:github/spring-projects/spring-session-data-geode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-session-data-geode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-session-data-geode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-session-data-geode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-session-data-geode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spring-projects","download_url":"https://codeload.github.com/spring-projects/spring-session-data-geode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-session-data-geode/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265563095,"owners_count":23788644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-geode","framework","java","spring-session"],"created_at":"2024-09-24T13:47:48.785Z","updated_at":"2025-07-17T03:35:39.663Z","avatar_url":"https://github.com/spring-projects.png","language":"Java","readme":":version: 3.0.0-M5\n:geode-version: 115\n\nimage:https://badges.gitter.im/spring-projects/spring-session.svg[link=\"https://gitter.im/spring-projects/spring-session?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\"]\n\nimage:https://travis-ci.org/spring-projects/spring-session.svg?branch=master[\"Build Status\", link=\"https://travis-ci.org/spring-projects/spring-session-data-geode\"]\n\n[[ssdg]]\n== Spring Session for Apache Geode\n\n_Spring Session_ core provides an API along with several provider implementations to manage user sessions.  It also\nsimplifies the support for clustered session state management without being tied to an application container\nspecific solution.\n\n[[notice]]\n== NOTICE\n\n[[notice-2023-january]]\n*2023-January-17*:\n\nAt the end of 2022, VMware https://tanzu.vmware.com/content/blog/spring-for-vmware-gemfire-is-now-available[announced]\nthe general availability of the Spring for VMware GemFire portfolio of projects.\n\nWhile these Spring based projects for VMware GemFire are open source and a succession to the Spring for Apache Geode\nprojects, they are not a replacement. VMware GemFire forked from the Apache Geode project and is not open source.\nAdditionally, newer Apache Geode and VMware GemFire clients are not backwards compatible with older Apache Geode\nand VMware GemFire servers. You can begin the transition by starting https://docs.vmware.com/en/Spring-Session-for-VMware-GemFire/index.html[here].\n\nAlternatively, the Spring portfolio provides first-class https://spring.io/projects/spring-session[integration]\nwith other comparable session caching providers. Also, see https://docs.spring.io/spring-session/reference/modules.html[here].\n\nFinally, keep in mind, the Spring for Apache Geode projects will still be maintained until OSS and commercial support\nends. Maintenance will only include CVE and critical fixes. No new features or major enhancements will be made.\nThe Spring Session for Apache Geode support timelines can be viewed https://spring.io/projects/spring-session#support[here].\n\n[[notice-2022-october]]\n*2022-October-24*:\n\nSee the October 24th https://github.com/spring-projects/spring-data-geode#notice[NOTICE]\non the _Spring Data for Apache Geode_ GitHub project page for complete details.\n\n[[project-features]]\n== Features\n\nOut of the box _Spring Session_ provides integration with:\n\n* `HttpSession` - replaces the `HttpSession` supplied by the application container (e.g. Apache Tomcat)\nin a neutral way along with providing HTTP Session IDs in the HTTP Header to work with REST APIs.\n\n* `WebSocket` - keeps the `HttpSession` active when receiving WebSocket messages.\n\nOn top of the core _Spring Session_ features, _Spring Session for Apache Geode and VMware Tanzu GemFire_ (SSDG)\npositions either https://geode.apache.org/[Apache Geode] or https://pivotal.io/pivotal-gemfire[VMware Tanzu GemFire]\nas a session repository provider and adds additional capabilities required by enterprise class solutions:\n\n* Custom `Expiration Policies` - in addition to the default, 30 minute session _idle expiration timeout_ (TTI), which\nis configurable, SSDG also supports _fixed-duration expiration timeout_ (e.g. expire the session after 1 hour\nregardless of whether the session is active or inactive).  Users may also define custom expiration policies using the\nhttps://docs.spring.io/autorepo/docs/spring-session-data-geode-build/{version}/api/org/springframework/session/data/gemfire/expiration/SessionExpirationPolicy.html[`SessionExpirationPolicy`] interface.\nSee the https://docs.spring.io/autorepo/docs/spring-session-data-geode-build/{version}/reference/html5/#httpsession-gemfire-expiration[documentation] for more details.\n\n* 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,\nusers may configure Apache Geode https://geode.apache.org/docs/guide/{geode-version}/developing/data_serialization/gemfire_data_serialization.html[Data Serialization]\nwith full support for https://geode.apache.org/docs/guide/{geode-version}/developing/delta_propagation/chapter_overview.html[Delta Propagation].\nWhile _race conditions_ between competing HTTP requests (accessing the same HTTP Session) cannot be completely avoided with\nany session provider, sending only the delta (or changes) minimizes the chance of _lost updates_, especially in a highly clustered\nWeb environment. By using PDX Serialization, your HTTP Session state is immediately transferable across environments, from non-managed,\nstandalone environments to managed environments, like https://pivotal.io/platform[Pivotal Cloud Foundry (PCF)]\nusing https://pivotal.io/platform/services-marketplace/data-management/pivotal-cloud-cache[Pivotal Cloud Cache (PCC)].\n\n* Custom `Change Detection` - while most session implementations consider the session to be dirty anytime anything is written\nto the session, even when your application domain objects stored in the session have not changed, SSDG will intelligently\ndetermine whether there is anything to send before writing it to the wire.  OOTB, SSDG will look at any application domain objects\nthat implement Apache Geode's https://geode.apache.org/releases/latest/javadoc/org/apache/geode/Delta.html[Delta] interface\nand use that to determine if your application domain objects are indeed dirty before sending the delta. If your objects do not\nimplement the `Delta` interface, or the object is not the same, then it functions like all other Spring Session providers.\nIf you prefer, you may specify your own rules composed with the `IsDirtyPredicate` strategy interface.\n\n* Powerful `Pub/Sub` - Apache Geode and VMware Tanzu GemFire both provide a very powerful and robust client/server\nhttps://geode.apache.org/docs/guide/{geode-version}/developing/events/chapter_overview.html[event distribution and handling sub-system]\nleveraged by SSDG in order to reliably manage session state, especially in a distributed/clustered environment.\n\nThese and many more Apache Geode or VMware Tanzu GemFire features may be leveraged in your application environment to\nachieve resilient, highly available (HA), durable, consistent, and even multi-clustered (WAN), persistent\nsession statement management.\n\nThe best part, SSDG allows you to use either Apache Geode or VMware Tanzu GemFire interchangeably without having to change\na single line of code.  Simply change your dependency from `org.springframework.session:spring-session-data-geode`\nto `org.springframework.session:spring-session-data-gemfire`, or vice versa, and you can seemlessly move between\neither Apache Geode or VMware Tanzu GemFire, or even PCC.\n\nNo other Spring Session provider offers you the same type of flexibility and power in 1 solution, especially as\nyour requirements and UC change (e.g. from simple session caching to a full on _System of Record_ with\n_distributed compute_ and _streaming capabilities_).\n\n[[website]]\n== Spring Session Project Site\n\nYou can find the documentation, issue management, support, samples, and guides for using _Spring Session_\nat https://projects.spring.io/spring-session/.\n\nAdditionally, you can find documentation, issue management, support, samples and guides using _Spring Session\nfor Apache Geode \u0026 VMware Tanzu GemFire_ at https://spring.io/projects/spring-session-data-geode.\n\n[[documentation]]\n=== Documentation\n\nDocumentation for _Spring Session for Apache Geode and VMware Tazu GemFire_ can be found\nhttps://docs.spring.io/spring-session-data-geode/docs/current/reference/html5/[here]\nand Javadoc is available https://docs.spring.io/spring-session-data-geode/docs/current/api/[here].\n\n[[code-of-conduct]]\n== Code of Conduct\n\nPlease see our https://github.com/spring-projects/.github/blob/master/CODE_OF_CONDUCT.md[code of conduct]\n\n[[report-security-vulnerability]]\n== Reporting Security Vulnerabilities\n\nPlease see our https://github.com/spring-projects/spring-session-data-geode/security/policy[Security policy].\n\n[[license]]\n== License\n\n_Spring Session_ is Open Source Software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspring-projects%2Fspring-session-data-geode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspring-projects%2Fspring-session-data-geode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspring-projects%2Fspring-session-data-geode/lists"}