Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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 Configuration

After 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 Connection

Spring 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 Initialization

Our <> 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