Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/couchbaselabs/spring-session-data-couchbase
Storing Spring Session into Couchbase
https://github.com/couchbaselabs/spring-session-data-couchbase
Last synced: 2 days ago
JSON representation
Storing Spring Session into Couchbase
- Host: GitHub
- URL: https://github.com/couchbaselabs/spring-session-data-couchbase
- Owner: couchbaselabs
- License: apache-2.0
- Created: 2019-04-05T13:19:46.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-05T03:04:41.000Z (about 2 years ago)
- Last Synced: 2024-04-12T16:19:17.098Z (9 months ago)
- Language: Java
- Size: 117 KB
- Stars: 6
- Watchers: 23
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.adoc
- Contributing: CONTRIBUTING.adoc
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.adoc
Awesome Lists containing this project
README
= Spring Session Couchbase
Spring Session Couchbase provides a solution for Spring Session in a Couchbase data store.
* Accessing a session from any environment (i.e. web, messaging infrastructure, etc)
* In a web environment
** Support for clustering in a vendor neutral way
** Pluggable strategy for determining the session id
** Easily keep the HttpSession alive when a WebSocket is active== Import Spring Session Couchbase
Simply add to your pom.xml the following dependency
pom.xml
[source,xml]
----io.github.couchbaselabs
spring-session-data-couchbase
1.1----
[[couchbase-spring-configuration]]
== Spring ConfigurationAfter adding the required dependencies, we can create our Spring configuration.
The Spring configuration is responsible for creating a Servlet Filter that replaces the `HttpSession` implementation with an implementation backed by Spring Session.// tag::config[]
All you have to do is to add the following Spring Configuration:[source,java]
----
@SpringBootApplication
@EnableCouchbaseHttpSession
public class MyApplication {public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}}
----<1> The `@EnableCouchbaseHttpSession` annotation creates a Spring Bean with the name of `springSessionRepositoryFilter` that implements Filter.
The filter is what is in charge of replacing the `HttpSession` implementation to be backed by Spring Session.
In this instance Spring Session is backed by Couchbase.The `@EnableCouchbaseHttpSession` has 4 properties:
* *maxInactiveIntervalInSeconds* (default 1800 seconds) - How long the session will live before expiring
* *typeName* (default "_type" ) - The name of the attribute that is going to be used as the type of the document
* *typeValue* (default "sessions" ) - The value of the type attribute that is going to be used to differentiate this document from others.
* *keepStringAsLiteral* (default false) - Any attribute in the session which is a String will be saved as a document attribute instead of being serialized in a binary format. This is really useful if you need to query the user's session via N1QL (Ex: create a dashboard of what users have in their sessions). Check out link:https://github.com/couchbaselabs/session-store-java[this example] to see it working
// end::config[][[boot-couchbase-configuration]]
== Configuring the Couchbase ConnectionSpring Boot automatically creates a Couchbase connection and connects Spring Session to a Couchbase Server. You can configure this connection by defining a `@Configuration` class which extends `org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration` or via *application.properties* :
.src/main/resources/application.properties
----
spring.couchbase.bootstrap-hosts=localhost
spring.couchbase.bucket.name=sessionstore
spring.couchbase.bucket.password=password
----[[boot-servlet-configuration]]
== Servlet Container InitializationOur <> created a Spring Bean named `springSessionRepositoryFilter` that implements `Filter`.
The `springSessionRepositoryFilter` bean is responsible for replacing the `HttpSession` with a custom implementation that is backed by Spring Session.In order for our `Filter` to do its magic, Spring needs to load our `Config` class.
Last we need to ensure that our Servlet Container (i.e. Tomcat) uses our `springSessionRepositoryFilter` for every request.
Fortunately, Spring Boot takes care of both of these steps for us.[[couchbase-sample]]
== Couchbase Sample Application
The https://github.com/couchbaselabs/session-store-java repo contains a fully functional example, please check the documentation in the sample to find out how to run it.
= Spring Session Project Site
You can find the documentation, issue management, support, samples, and guides for using Spring Session Couchbase at http://projects.spring.io/spring-session-data-couchbase/
= License
Spring Session is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].
= Support
This is a community project mainly supported by me. If you have any questions feel free to ping me at @deniswsrosa