Cubby on GAE

ということで、遅ればせながら T2 や、Slim3から刺激を受け、Cubby を GAE で動かしてみました。特に T2 のサンプルソースはハマりどころの問題解決の為に、その差異を見たりと色々助かりましたです。ありがとうございます。

今動いているのは、cubbymavenarchetype を利用して作成した時に出来るサンプルのアプリ + ファイルアップロードを加えたものです。ソースは

にあります。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 もしておきました。

welcome-file で / を設定すると無限ループ

詳細追いきれてませんが、発生しました。。。index.jsp だけ入れてあります。

と、色々とまだハマり所やバッドノウハウなどは続々出てきそうではありますが、これから楽しみですねー。

追記 : まだ試してませんが、maven plugin も早速出て来てますねー。