image:https://travis-ci.org/spring-projects/spring-session-data-mongodb.svg?branch=master["Build Status", link="https://travis-ci.org/spring-projects/spring-session-data-mongodb"]

= Spring Session MongoDB
Greg Turnquist

Spring Session MongoDB provides a solution for Spring Session in a MongoDB 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


== Building Spring Session MongoDB

. Run `mvn clean package`

This will generate the artifact.

You can also import the project into your IDE.

== Releasing Spring Session MongoDB

Snapshots are published automatically via CI server by doing this:

----
$ USERNAME=<username> PASSWORD=<encrypted password> mvn -Pdistribute,snapshot,docs clean deploy
----

IMPORTANT: Snapshots do NOT include GPG signatures. To do so would require putting a private key on the CI server. The process for releases (below) is manual and DOES include GPG signatures.

To do a release (.RELEASE, .RC?, .M?):

. Check in all changes and ensure there are no edited files.
. Bump up the version in `pom.xml` to the desired version and commit the change.
. `git tag <version>` (like v2.0.1.RELEASE)
. Execute a maven deploy.
* For a milestone: `USERNAME=<user> PASSWORD=<encrypted password> mvn -Pdistribute,gpg,milestone,docs clean deploy`
* For a release: `USERNAME=<user> PASSWORD=<encrypted password> mvn -Pdistribute,gpg,release,docs clean deploy`
* For a release to maven central: `USERNAME=<user> PASSWORD=<nexus password> mvn -Pdistribute,gpg,central,docs clean deploy -s settings.xml`
. Bump up the version in `pom.xml` again to the next BUILD-SNAPSHOT.
. Commit the change.
. `git push` (This will push the tagged version along with the release AND the new snapshot commit)
. Inspect handiwork at https://repo.spring.io/ or https://oss.sonatype.org/#stagingRepositories

NOTE: A word about reference documentation. Based upon https://github.com/spring-projects/spring-framework/wiki/gradle-build-and-release-faq#user-content-wiki-docs_schema_dist_publication[this], the `distribute` profile contains an artifactory property that is applied to the ZIP file generated by the `docs` profile. A CRON job will scoop up the zipped up docs and unpack them inside the target location.

== Code of Conduct
This project adheres to the Contributor Covenant link:CODE_OF_CONDUCT.adoc[code of conduct].
By participating, you  are expected to uphold this code. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

= Spring Session Project Site

You can find the documentation, issue management, support, samples, and guides for using Spring Session MongoDB at http://projects.spring.io/spring-session-data-mongodb/

= License

Spring Session is Open Source software released under the http://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].
