Cubby on GAE
ということで、遅ればせながら T2 や、Slim3から刺激を受け、Cubby を GAE で動かしてみました。特に T2 のサンプルソースはハマりどころの問題解決の為に、その差異を見たりと色々助かりましたです。ありがとうございます。
今動いているのは、cubby を maven の archetype を利用して作成した時に出来るサンプルのアプリ + ファイルアップロードを加えたものです。ソースは
にあります。Cubby 2.x で、Guice を使ってます。思いっきり 2.0-beta2-snapshot など、テンポラリ感満載ですが。。。
ハマった所としては、
EL を解決してくれない。。。
簡単にいうと ${contextPath} とかがそのまま出てします。この辺り や この辺りを見て、
- jstl-xx.jar を含めない
- jsp に <%@ page isELIgnored="false" %> を含める
- web.xml の宣言を GAE plugin が生成するものではなく、以下の 2.4 準拠のモノに返る
<web-app id="cuubby_example_gae" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
isELIgnored などは、後述するように jsp-config の include-prelude が使えないのでやむなく。。。
jsp-config を上手く認識してくれない
この辺りの設定は一切呼んでくれなかったです。ので、個々の jsp で設定。
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>false</el-ignored> <page-encoding>UTF-8</page-encoding> <scripting-invalid>false</scripting-invalid> <include-prelude>/common/header.jsp</include-prelude> <trim-directive-whitespaces>true</trim-directive-whitespaces> </jsp-property-group> </jsp-config>
ConcurrentHashMap を session に保存しようとすると CNFE
Cubby 2.x では flash の実現で ConcurrentHashMap を利用している部分でひっかかってました。
whitelist みてものっているので、これは正しくバグのはず。一応今回の対応ではソースでそれに対応するためのコード入れてますが、本来は不要。vote もしておきました。
レッドクリフ Part II
見てきました。ちょっと長かった。。。