{"id":19567484,"url":"https://github.com/yyuu/jetty-nosql-memcached","last_synced_at":"2025-06-22T07:33:01.656Z","repository":{"id":47677388,"uuid":"2348354","full_name":"yyuu/jetty-nosql-memcached","owner":"yyuu","description":"memcached session manager for jetty (based on jetty-nosql)","archived":false,"fork":false,"pushed_at":"2022-07-07T22:07:19.000Z","size":320,"stargazers_count":44,"open_issues_count":11,"forks_count":36,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-27T02:33:50.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/yyuu/jetty-nosql-memcached","language":"Java","has_issues":false,"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/yyuu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-09-08T13:11:29.000Z","updated_at":"2025-02-24T21:15:43.000Z","dependencies_parsed_at":"2022-08-22T09:20:21.695Z","dependency_job_id":null,"html_url":"https://github.com/yyuu/jetty-nosql-memcached","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/yyuu/jetty-nosql-memcached","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yyuu%2Fjetty-nosql-memcached","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yyuu%2Fjetty-nosql-memcached/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yyuu%2Fjetty-nosql-memcached/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yyuu%2Fjetty-nosql-memcached/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yyuu","download_url":"https://codeload.github.com/yyuu/jetty-nosql-memcached/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yyuu%2Fjetty-nosql-memcached/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261255544,"owners_count":23131473,"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":[],"created_at":"2024-11-11T05:37:41.385Z","updated_at":"2025-06-22T07:32:56.643Z","avatar_url":"https://github.com/yyuu.png","language":"Java","funding_links":[],"categories":["分布式开发"],"sub_categories":["微服务框架"],"readme":"# jetty-nosql-memcached\n\n[![Build Status](https://secure.travis-ci.org/yyuu/jetty-nosql-memcached.png?branch=master)](http://travis-ci.org/yyuu/jetty-nosql-memcached)\n\n## Overview\n\nSessionManager implementation for Jetty based on jetty-nosql.\n\n## Install\n\njetty-nosql-memcached is an extension for Jetty.\nYou have to install jars into jetty's `${jetty.home}/lib/ext`.\n\nBuilt jars of jetty-nosql-memcached can be found on Maven Central.\nYou can install one of them without building.\n\n- http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22jetty-nosql-memcached%22\n\n*NOTE*\n\nYou must install jetty-nosql-memcached into Jetty with all dependent jars, such like jetty-nosql and SpyMemcached.\nIf you're not sure, it's better to use all-in-one jar like `jetty-nosql-memcached-${version}-jar-with-dependencies.jar`.\nYou don't have to be aware of missing dependencies since all-in-one jar includes all dependencies in single jar file.\n\n\n## Configuration\n\nYou need to configure both \"session manager\" and \"session ID manager\".\n\n\n### Configuring \"session ID manager\"\n\nSessionIdManagers can be configured in files under `${JETTY_HOME}/etc`.  In following example, using `${JETTY_HOME}/etc/jetty.xml`.\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003cConfigure id=\"Server\" class=\"org.eclipse.jetty.server.Server\"\u003e\n(... snip ...)\n  \u003cSet name=\"sessionIdManager\"\u003e\n    \u003cNew id=\"memcachedSessionIdManager\" class=\"org.eclipse.jetty.nosql.memcached.MemcachedSessionIdManager\"\u003e\n      \u003cArg\u003e\u003cRef id=\"Server\" /\u003e\u003c/Arg\u003e\n      \u003cSet name=\"serverString\"\u003elocalhost:11211\u003c/Set\u003e\n      \u003cSet name=\"keyPrefix\"\u003esession:\u003c/Set\u003e\n    \u003c/New\u003e\n  \u003c/Set\u003e\n  \u003cCall name=\"setAttribute\"\u003e\n    \u003cArg\u003ememcachedSessionIdManager\u003c/Arg\u003e\n    \u003cArg\u003e\u003cRef id=\"memcachedSessionIdManager\" /\u003e\u003c/Arg\u003e\n  \u003c/Call\u003e\n\u003c!-- // equivalent in Java:\n  Server server = ...;\n  MemcachedSessionIdManager memcachedSessionIdManager = new MemcachedSessionIdManager(server);\n  memcachedSessionIdManager.setServerString(\"localhost:11211\");\n  memcachedSessionIdManager.setKeyPrefix(\"session:\");\n  server.setSessionIdManager(memcachedSessionIdManager);\n  server.setAttribute(\"memcachedSessionIdManager\", memcachedSessionIdManager);\n  --\u003e\n\u003c/Configure\u003e\n```\n\n#### Extra options for \"session ID manager\"\n\nYou can configure the behavior of session ID manager with following setters.\n\n* setClientFactory(AbstractMemcachedClientFactory cf)\n  * set memcached client. org.eclipse.jetty.nosql.memcached.spymemcached.SpyMemcachedClientFactory is used by default.\n* setDefaultExpiry(int defaultExpiry)\n  * set default expiry of sessions on memcached.\n* setKeyPrefix(String keyPrefix)\n  * use keyPrefix for session key prefix on memcached.\n* setKeySuffix(String keySuffix)\n  * use keySuffix for session key suffix on memcached.\n* setServerString(String serverString)\n  * specify server address and port in string. multiple hosts can be specified with spaces.\n* setTimeoutInMs(int timeoutInMS)\n  * set timeout for memcached connections.\n\n\n### Configuring \"session manager\"\n\nSessionManagers can be configured by either `${APP_ROOT}/WEB-INF/jetty-web.xml` or `${JETTY_HOME}/webapps/${APP_NAME}.xml`.\n\nSample configuration for `${APP_ROOT}/WEB-INF/jetty-web.xml`:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cConfigure class=\"org.eclipse.jetty.webapp.WebAppContext\"\u003e\n(... snip ...)\n  \u003cGet name=\"server\"\u003e\n    \u003cGet id=\"memcachedSessionIdManager\" name=\"sessionIdManager\" /\u003e\n  \u003c/Get\u003e\n  \u003cSet name=\"sessionHandler\"\u003e\n    \u003cNew class=\"org.eclipse.jetty.server.session.SessionHandler\"\u003e\n      \u003cArg\u003e\n        \u003cNew class=\"org.eclipse.jetty.nosql.memcached.MemcachedSessionManager\"\u003e\n          \u003cSet name=\"sessionIdManager\"\u003e\n            \u003cRef id=\"memcachedSessionIdManager\" /\u003e\n          \u003c/Set\u003e\n        \u003c/New\u003e\n      \u003c/Arg\u003e\n    \u003c/New\u003e\n  \u003c/Set\u003e\n\u003c/Configure\u003e\n\u003c!-- // equivalent in Java\n  WebAppContext context = ...\n  Server server = ...;\n  MemcachedSessionIdManager sessionIdManager = server.getAttribute(\"memcachedSessionIdManager\");\n  MemcachedSessionManager sessionManager = new MemcachedSessionManager();\n  sessionManager.setSessionIdManager(sessionIdManager);\n  context.setSessionHandler(new SessionHandler(sessionManager));\n  --\u003e\n```\n\nSample configuration for `${JETTY_HOME}/webapps/${APP_NAME}.xml`:\n\n```xml\n\u003c?xml version=\"1.0\"  encoding=\"ISO-8859-1\"?\u003e\n\u003c!DOCTYPE Configure PUBLIC \"-//Mort Bay Consulting//DTD Configure//EN\" \"http://jetty.eclipse.org/configure.dtd\"\u003e\n\u003cConfigure class=\"org.eclipse.jetty.webapp.WebAppContext\"\u003e\n(... snip ...)\n  \u003cRef name=\"Server\" id=\"Server\"\u003e\n    \u003cCall id=\"sessionIdManager\" name=\"getAttribute\"\u003e\n      \u003cArg\u003ememcachedSessionIdManager\u003c/Arg\u003e\n    \u003c/Call\u003e\n  \u003c/Ref\u003e\n  \u003cSet name=\"sessionHandler\"\u003e\n    \u003cNew class=\"org.eclipse.jetty.server.session.SessionHandler\"\u003e\n      \u003cArg\u003e\n        \u003cNew id=\"memcachedSessionManaegr\" class=\"org.eclipse.jetty.nosql.memcached.MemcachedSessionManager\"\u003e\n          \u003cSet name=\"sessionIdManager\"\u003e\n            \u003cRef id=\"memcachedSessionIdManager\" /\u003e\n          \u003c/Set\u003e\n          \u003cSet name=\"sessionFactory\"\u003e\n            \u003cNew class=\"org.eclipse.jetty.nosql.kvs.session.xstream.XStreamSessionFactory\" /\u003e\n          \u003c/Set\u003e\n        \u003c/New\u003e\n      \u003c/Arg\u003e\n    \u003c/New\u003e\n  \u003c/Set\u003e\n\u003c/Configure\u003e\n\u003c!-- // equivalent in Java\n  WebAppContext context = ...\n  Server server = ...;\n  MemcachedSessionIdManager sessionIdManager = server.getAttribute(\"memcachedSessionIdManager\");\n  MemcachedSessionManager sessionManager = new MemcachedSessionManager();\n  sessionManager.setSessionIdManager(sessionIdManager);\n  sessionManager.setSessionFactory(new XStreamSessionFactory());\n  context.setSessionHandler(new SessionHandler(sessionManager));\n  --\u003e\n```\n\n\n#### Extra options for \"session manager\"\n\nYou can configure the behavior of session manager with following setters.\n\n* setSessionIdManager(SessionIdManager idManager)\n  * session id manager you created.\n* setSessionFactory(AbstractSessionFactory sf)\n  * set session serializer. org.eclipse.jetty.nosql.kvs.session.serializable.SerializableSessionFactory is used by default.\n\n\n## Development\n\n### Requirements\n\nAll library dependencies can be resolved from Maven.\n\n* [maven](http://maven.apache.org/)\n* [jetty](http://eclipse.org/jetty/)\n* [spymemcached](http://code.google.com/p/spymemcached/)\n* [xmemcached](http://code.google.com/p/xmemcached/)\n* [kryo](http://code.google.com/p/kryo/)\n* [xstream](http://xstream.codehaus.org/)\n\n### Build\n\nYou can build project tree from top of the repository.\n\n```sh\n$ git clone git://github.com/yyuu/jetty-nosql-memcached.git\n$ cd jetty-nosql-memcached\n$ mvn clean package\n```\n\n### Release\n\nUse nexus-staging-maven-plugin.\n\n```sh\n$ mvn versions:set -DnewVersion=\"${VERSION}\"\n$ git commit -a -m \"v${VERSION}\"\n$ mvn clean deploy -DperformRelease -Dgpg.keyname=\"${GPG_KEYNAME}\" -Dgpg.passphrase=\"${GPG_PASSPHRASE}\"\n$ mvn nexus-staging:release # may not work\n$ git tag \"jetty-nosql-memcached-parent-${VERSION}\"\n```\n\n\n## License\n\n* Copyright (c) 2011-2015 Yamashita, Yuu\n\nAll rights reserved. This program and the accompanying materials\nare made available under the terms of the Eclipse Public License v1.0\nand Apache License v2.0 which accompanies this distribution.\n\nThe Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html\n\nThe Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php\n\nYou may elect to redistribute this code under either of these licenses.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyyuu%2Fjetty-nosql-memcached","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyyuu%2Fjetty-nosql-memcached","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyyuu%2Fjetty-nosql-memcached/lists"}