您的位置:首页 > 数据库 > Redis

Jetty Session Persistence By Redis

2015-09-14 11:14 501 查看
Copy jar 到$JETTY_HOME/lib/ext目录下

-rw-rw-r--. 1 conversant conversant  100193 Sep 11 17:34 commons-pool-1.5.5.jar
-rw-rw-r--. 1 conversant conversant  228268 Sep 11 17:34 jackson-core-asl-1.9.3.jar
-rw-rw-r--. 1 conversant conversant  773019 Sep 11 17:34 jackson-mapper-asl-1.9.3.jar
-rw-r--r--. 1 conversant conversant  125841 Sep 11 17:34 jedis-2.0.0.jar
-rw-rw-r--. 1 conversant conversant 1991094 Sep 11 17:34 jetty-session-redis-2.4.ga-SNAPSHOT-all.jar
-rw-r--r--. 1 conversant conversant   93525 Sep 11 17:34 logback-access-1.1.2.jar
-rw-r--r--. 1 conversant conversant  270747 Sep 11 17:34 logback-classic-1.1.2.jar
-rw-r--r--. 1 conversant conversant  427729 Sep 11 17:34 logback-core-1.1.2.jar
-rw-rw-r--. 1 conversant conversant  361155 Sep 11 17:34 trove-1.0.2.jar
-rw-rw-r--. 1 conversant conversant   24956 Sep 11 17:34 xpp3_min-1.1.4c.jar
-rw-rw-r--. 1 conversant conversant  431406 Sep 11 17:34 xstream-1.3.1.jar


 

准备jetty-cluster.xml

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<!-- =============================================================== -->
<!-- Documentation of this file format can be found at:              -->
<!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax        -->
<!--                                                                 -->
<!-- Additional configuration files are available in $JETTY_HOME/etc -->
<!-- and can be mixed in. See start.ini file for the default         -->
<!-- configuration files.                                            -->
<!--                                                                 -->
<!-- For a description of the configuration mechanism, see the       -->
<!-- output of:                                                      -->
<!--   java -jar start.jar -?                                        -->
<!-- =============================================================== -->

<!-- =============================================================== -->
<!-- Configure a Jetty Server instance with an ID "Server"           -->
<!-- Other configuration files may also configure the "Server"       -->
<!-- ID, in which case they are adding configuration to the same     -->
<!-- instance.  If other configuration have a different ID, they     -->
<!-- will create and configure another instance of Jetty.            -->
<!-- Consult the javadoc of o.e.j.server.Server for all              -->
<!-- configuration that may be set here.                             -->
<!-- =============================================================== -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">

<!-- =========================================================== -->
<!-- Configure the Server Thread Pool.                           -->
<!-- The server holds a common thread pool which is used by      -->
<!-- default as the executor used by all connectors and servlet  -->
<!-- dispatches.                                                 -->
<!--                                                             -->
<!-- Configuring a fixed thread pool is vital to controlling the -->
<!-- maximal memory footprint of the server and is a key tuning  -->
<!-- parameter for tuning.  In an application that rarely blocks -->
<!-- then maximal threads may be close to the number of 5*CPUs.  -->
<!-- In an application that frequently blocks, then maximal      -->
<!-- threads should be set as high as possible given the memory  -->
<!-- available.                                                  -->
<!--                                                             -->
<!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool   -->
<!-- for all configuration that may be set here.                 -->
<!-- =========================================================== -->
<Arg name="threadpool">
<New id="threadpool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Arg name="minThreads" type="int"><Property name="threads.min" default="10"/></Arg>
<Arg name="maxThreads" type="int"><Property name="threads.max" default="200"/></Arg>
<Arg name="idleTimeout" type="int"><Property name="threads.timeout" default="60000"/></Arg>
<Set name="detailedDump">false</Set>
</New>
</Arg>

<!-- =========================================================== -->
<!-- Add shared Scheduler instance                               -->
<!-- =========================================================== -->
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.util.thread.ScheduledExecutorScheduler"/>
</Arg>
</Call>

<!-- =========================================================== -->
<!-- Http Configuration.                                         -->
<!-- This is a common configuration instance used by all         -->
<!-- connectors that can carry HTTP semantics (HTTP, HTTPS, SPDY)-->
<!-- It configures the non wire protocol aspects of the HTTP     -->
<!-- semantic.                                                   -->
<!--                                                             -->
<!-- This configuration is only defined here and is used by      -->
<!-- reference from the jetty-http.xml, jetty-https.xml and      -->
<!-- jetty-spdy.xml configuration files which instantiate the    -->
<!-- connectors.                                                 -->
<!--                                                             -->
<!-- Consult the javadoc of o.e.j.server.HttpConfiguration       -->
<!-- for all configuration that may be set here.                 -->
<!-- =========================================================== -->
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">https</Set>
<Set name="securePort"><Property name="jetty.https.port" default="8443" /></Set>
<Set name="outputBufferSize">32768</Set>
<Set name="requestHeaderSize">8192</Set>
<Set name="responseHeaderSize">8192</Set>
<Set name="sendServerVersion">true</Set>
<Set name="sendDateHeader">false</Set>
<Set name="headerCacheSize">512</Set>

<!-- Uncomment to enable handling of X-Forwarded- style headers
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
</Call>
-->
</New>

<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="httpConfig" /></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8080" /></Set>
<Set name="idleTimeout"><Property name="http.timeout" default="30000"/></Set>
</New>
</Arg>
</Call>

<Call id="httpsConnector" name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.SslConnectionFactory">
<Arg name="next">http/1.1</Arg>
<Arg name="sslContextFactory"><Ref refid="sslContextFactory"/></Arg>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="sslHttpConfig"/></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.https.port" default="8443" /></Set>
<Set name="idleTimeout">30000</Set>
</New>
</Arg>
</Call>

<!-- =========================================================== -->
<!-- Set the default handler structure for the Server            -->
<!-- A handler collection is used to pass received requests to   -->
<!-- both the ContextHandlerCollection, which selects the next   -->
<!-- handler by context path and virtual host, and the           -->
<!-- DefaultHandler, which handles any requests not handled by   -->
<!-- the context handlers.                                       -->
<!-- Other handlers may be added to the "Handlers" collection,   -->
<!-- for example the jetty-requestlog.xml file adds the          -->
<!-- RequestLogHandler after the default handler                 -->
<!-- =========================================================== -->
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<!--
<Item>
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
-->
<Item>
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="project.home" default="."/>/webapps</Set>
<Set name="defaultsDescriptor"><SystemProperty name="project.home" default="."/>/conf/jetty/webdefault.xml</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">false</Set>
<Call name="addServlet">
<Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
<Arg>/</Arg>
</Call>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler">
<Arg>
<New class="com.ovea.jetty.session.redis.RedisSessionManager">
<Arg>session/redis</Arg>
<Arg>
<New class="com.ovea.jetty.session.serializer.JsonSerializer"/>
</Arg>
<!-- set the interval in seconds to force session persistence event if it didn't changed. Default to 60 seconds -->
<Set name="saveInterval">20</Set>
<!-- set the cookie domain -->
<Set name="sessionDomain">ssdev.swiftsync.com.sg</Set>
<!-- set the cookie path -->
<Set name="sessionPath">/</Set>
<!-- set the cookie max age in seconds. Default is -1 (no max age). 1 day = 86400 seconds -->
<Set name="maxCookieAge">86400</Set>
<!-- set the interval in seconds to refresh the cookie max age. Default to 0. This number should be lower than the session expirity time. -->
<Set name="refreshCookieAge">300</Set>
</New>
</Arg>
</New>
</Set>

</New>
</Item>
</Array>
</Set>
</New>
</Set>

<!-- =========================================================== -->
<!-- extra server options                                        -->
<!-- =========================================================== -->
<Set name="stopAtShutdown">true</Set>
<Set name="stopTimeout">5000</Set>
<Set name="dumpAfterStart"><Property name="jetty.dump.start" default="false"/></Set>
<Set name="dumpBeforeStop"><Property name="jetty.dump.stop" default="true"/></Set>

</Configure>


 

 

准备jetty-session.xml,并且修改如下配置:

<Arg>192.168.1.12</Arg> <Arg type="int">8663</Arg>

 

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<!-- =============================================================== -->
<!-- Configure the Jetty Request Log                                 -->
<!-- =============================================================== -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!--
Configure session id management
-->
<Set name="sessionIdManager">
<New class="com.ovea.jetty.session.redis.RedisSessionIdManager">
<Arg>
<Ref id="Server"/>
</Arg>
<Arg>session/redis</Arg>
<!-- time interval to check for expired sessions in redis cache, in milliseconds. Defaults to 1 min -->
<Set name="scavengerInterval">30000</Set>
<!-- cluster node name -->
<Set name="workerName">
<SystemProperty name="jetty.node" default="web1"/>
</Set>
</New>
</Set>

<!--
Provides a Redis Pool for session management on server and each webapp
-->
<New class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>session/redis</Arg>
<Arg>
<New class="redis.clients.jedis.JedisPool">
<Arg>
<New class="org.apache.commons.pool.impl.GenericObjectPool$Config">
<Set type="int" name="minIdle">5</Set>
<Set type="int" name="maxActive">15</Set>
<Set type="boolean" name="testOnBorrow">true</Set>
</New>
</Arg>
<Arg>192.168.1.12</Arg>
<Arg type="int">8663</Arg>
</New>
</Arg>
</New>

</Configure>


 

 

Modify jetty 启动脚本

JETTY_ARGS="lib=$JETTY_HOME/lib $APP_HOME/conf/jetty/jetty-cluster.xml $APP_HOME/conf/jetty/jetty-requestlog.xml $APP_HOME/conf/jetty/jetty-session.xml OPTIONS=jsp"


 

 

参考资料

 

https://github.com/Ovea/jetty-session-redis
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: