GAE/J (Google App Engine for Java) で Struts を動かす

GAE/J でも Struts は動く

GAE/J では Spring を始め、いわゆる「重い」フレームワークは避けたい。

今後オレオレフレームワークを作るのか、Slim3等に移行するのかは、まだ決めかねています。

当面は Spring は兎も角、使い慣れた Struts と Velocity を使うことにします。

Velocityは先日やりましたから、今回はStrutsです。

先人の知恵、こちらや、こちらを参考に、環境を作ります。

因みにWill it play in App Engine – Google App Engine for Java | Google Groupsによると、Struts1系は 1.2.28 で COMPATIBLE となっています(2010年02月09日現在)。

 


ダウンロードとインストール

Apache Software Foundation の Strutsのサイトからダウンロードします。ライブラリだけで良いので、struts-1.3.10-apps.zip をダウンロードして解凍します。

解凍して出来た struts-1.3.10/lib/ の中身を全部、ワークスペースのプロジェクト下の war/WEB-INF/lib/ にコピーします。

eclipseを起動して、war/WEB-INF/lib/ の下にコピーしたjarファイルを、[CTRLキー]を押しながらポチポチと選択していきます。それらを右クリックして、[ビルド・バス(B)] – [ビルド・パスに追加(A)]をクリックします。

念のため、プロジェクトの[参照ライブラリー]にそれらが追加されている事を確認します。

 


web.xml に追加

WEBアプリケーションの設定ファイル( web.xml )に、Strutsのマッピングとかを追加します。(プロジェクト下の war/WEB-INF/にあります)

ベタに書くならこんなかんじです。

※load-on-startup は一応書いてますが、GAE/Jでは無視されます

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/classes/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

 


log4j.properties に追加

ロギングはlog4jを使ってます。

Struts関係のデバッグログとかが多くて困るので、追加したライブラリ関係のロギングをWARNに変更する設定を追加しました。

log4j.logger.org.apache.struts=WARN,A1
log4j.logger.org.apache.commons=WARN,A1

勿論、アペンダー(A1)は環境にあわせて適宜変えて下さい。

 


struts-config.xml を作成

Strutsの設定ファイル (struts-config.xml)をプロジェクトの src/ に作ります(ビルドしたら、war/WEB-INF/classes/にコピーされます)。

フォーマットとかは割愛しますが、encoding に UTF-8 を明示的に指定して上げるのが、文字化け対策としての作法の様です。

こんな風に。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans>
    .
    .
    .

 


appengine-web.xml に追加

Google App Engine設定ファイル(/war/WEB-INF/appengine-web.xml)に設定を追記し、セッションを有効にします。

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

これをしないと、「Session support is not enabled in appengine-web.xml」とかがいっぱい出て動きません。