Hatena::ブログ(Diary)

unrockoの日記

2010-02-14

memcached session managerをtomcatで使う

webアプリケーションでsessionの情報をmemcachedへ自動で保存する方法を調べてみた。

英語のサイトしか見つからなかったが、どうやら、こいつがいけるっぽい。

Google Code Archive - Long-term storage for Google Code Project Hosting.


Tomcatに設定してフェールオーバー対策まで行ってくれる。

自動で

セッションを見て、メモリ上になかったら、memcachedに見に行く。

そんな感じかな。

まだ、ぜんぜん使えていないが、設定だけは行って起動したら、動いたっぽい。


サイトの受け売りだけど、

catalina_home\libに

を置く。

serializeの方法によって置くjarファイルが増えるらしいけど、とりあえず、今回はこれでやってみる。

で、

catalina_home\conf\server.xmlに追記

<Context path="/foo">

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:localhost:11211 n2:localhost:11212"

failoverNodes="n2"

requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" // ここは消した

copyCollectionsForSerialization="false"

/>

</Context>

これは、上記ページままだけど、自分は transcoderFactoryClassの行は消しました。

で、実行すればよいそうで、実行してみたら、

起動はしたけど、エラー。

2010-02-14 22:57:49.019 INFO net.spy.memcached.MemcachedConnection: Reconnectin

g due to failure to connect to {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=

0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}

java.net.ConnectException: Connection refused: no further information

at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574

)

at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.ja

va:295)

at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.ja

va:193)

at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:1458)

当然です。

memcachedを起動していなかったから。

というかインストールも忘れてた。

で、インストールしようとして、本日の別記事、memcached for windowsを64bitで動かす - unrockoの日記へと流れます。

結論から言うと、memcachedインストールできなくて、テストできませんでした。

だめだめだぁ。

明日だめなら、32-bit版でテストしよ。

どうせ、Linuxでやることになるだろうし。

memcached for windowsを64bitで動かす

以前、memcache for windowsインストールして実行したが、

64-bitのwindowsマシンに入れたら、インストールと起動ができなかった。


C:\Tools\memcached-1.2.4-Win32-Preview-20080309_bin>memcached.exe -d install

failed to install service or service already installed

と出る。

起動しようとすると

C:\Tools\memcached-1.2.4-Win32-Preview-20080309_bin>memcached.exe -d start

failed to start service

と出る。

32-bit版を使用したので当然といえば当然か。

ということで、64bitを探すことに。

google先生に聞くと、こんなサイトを見つけた。

Google グループ


>>>>>>> I would not recommend using any version prior to 1.2.5 on the windows

>>>>>>> platform, we've had issues with all of them.

>>>>>>> You can get a 1.2.5 binary here:

>>>>>>> http://code.jellycan.com/memcached/

>>>>>>> Or here:

>>>>>>> http://code.google.com/p/beitmemcached/downloads/list

>>>>>>> We've been running that on both Server 2003 64bit and Server 2008

>>>>>>> 64bit without any problems.

この辺の話題をみると、1.2.5では、問題なく動くぜ!

って言ってるぽい。

ので、

Google Code Archive - Long-term storage for Google Code Project Hosting.

ここから、ダウンロードして解凍、そして実行してみる。

C:\Tools\Memcached_1.2.5>memcached.exe -d install

failed to install service or service already installed

C:\Tools\Memcached_1.2.5>memcached.exe -d start

failed to start service

だめじゃねーか。

えー

今日はだめだ。。。

明日、調査してみよう。