Slim3:セッションを使う

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

http://www.okolabo.com

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

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

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

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

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

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

// セッション "key"に値"value"を設定する。
sessionScope("key", "value");

// セッション "key"を取得する。
String key = sessionScope("key");

// セッション "key"を削除する。
removeSessionScope("key");

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

<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以下に作成)

<?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 | タグ | パーマリンク

コメントを残す

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