Slim3:セッションを使う

今日、オコラボのサイトを暫定で完成としてデプロイしましたー!パチパチパチ!!
暫定で完成ってのも変な表現だけど。

http://www.okolabo.com

自社サイトをSlim3使ってGAE上に構築するというのは、ローコストかつ安定してるので、機会損失が自社サーバで行うよりも少ないだろうと思います。こういう提案もしていきたいなぁ〜と思ってます。アクセス数によるけど、基本的に維持費はドメイン代だけで済むし。有料になるくらいアクセス集中するって、よっぽどですからね。

さて、話はSlim3でセッションを使うです。PHPerな自分はそういえばSlim3でセッションを使うようなことをしたことがなかった!セッションを使いたかった理由は、お問い合わせページでリロードによる連投を防ぐためです。

まず、appengine-web.xmlのsessions-enabledをtrueにします。

1
<sessions-enabled>true</sessions-enabled>

これでセッションが使えるようになりました。

セッションの設定方法、取得方法、削除方法は以下の通りです。

1
2
3
4
5
6
7
8
// セッション "key"に値"value"を設定する。
sessionScope("key", "value");
 
// セッション "key"を取得する。
String key = sessionScope("key");
 
// セッション "key"を削除する。
removeSessionScope("key");

セッションのデータはDatastoreにどんどん蓄積されていくので、定期的に削除してやらなければならない模様。どうも既にセッションデータをクリーンするサーブレットは準備されているらしいので、cronで定期的に削除してやればよいらしいっす。
web.xmlに以下を追加します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<servlet>
    <servlet-name>_ah_sessioncleanup</servlet-name>
    <servlet-class>com.google.apphosting.utils.servlet.SessionCleanupServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>_ah_sessioncleanup</servlet-name>
    <url-pattern>/_ah/sessioncleanup</url-pattern>
</servlet-mapping>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>session-cleanup</web-resource-name>
        <url-pattern>/_ah/sessioncleanup</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

また、cron.xmlに以下のようにします。(cron.xmlがない場合はWEB-INF以下に作成)

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
    <cron>
        <url>/_ah/sessioncleanup?clear</url>
        <description>Clean up sessions</description>
        <schedule>every 12 hours</schedule>
    </cron>
</cronentries>

以上でーす。


カテゴリー GAE for Java, Java, slim3 | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です