調べましたところ, 以下の2つの記事が秀逸です。参考にさせていただきました。
http://knowledge.sorich.jp/?Google%20App%20Engine%2FStruts2%E3%81%AE%E9%80%A3%E6%90%BA
http://whyjava.wordpress.com/2009/08/30/creating-struts2-application-on-google-app-engine-gae/
●環境
- Windows 7
- Eclipse 3.7
- Google App Engine
- Struts2(2.3.1.1)
●手順
1. Struts2のlib の準備
2. web.xml の記述
3. 実際のプログラムを書く
4. struts.xml の設定
今回のフォルダ構成です(一部省略)
Struts2AppEngine (プロジェクト名)
| - war
| - WEB-INF
| - lib : ここにstruts2の必要な.jar を入れる
| - classes : ここにclassや, struts.xml を入れる
ソースファイル
HelloAction.java
OgnlListener.java
※重要なのは, struts.xml を classes のところにいれることくらいです
1. Struts2のlib の準備
以下のlib を /war/WEB-INF/lib 以下に加え,
Build Pathに追加する
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
freemarker-2.3.18.jar
javassist-3.11.0.GA.jar
ognl-3.0.3.jar
struts2-core-2.3.1.1.jar
struts2-dojo-plugin-2.3.1.1.jar
xwork-core-2.3.1.1jar
2. web.xml の記述
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.appspot.struts2.listener.OgnlListener</listener-class>
</listener>
</web-app>
上の方に書いてあるのが, struts2用の設定です。
さて重要なので, 下のやつ, OgnlListner という リスナを追加しています。リスナの説明は後程
3. 実際のプログラム
ex) Action クラス
package com.appspot.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport
{
private static String HELLO = "hello";
public String execute()
{
return HELLO;
}
}
Struts2のAction です。 ActionSupport を拡張して, ただ単に, hello というresult に返すだけです。
ex) リスナ
package com.appspot.struts2.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import ognl.OgnlRuntime;
public class OgnlListener implements ServletContextListener
{
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
}
@Override
public void contextInitialized(ServletContextEvent arg0)
{
OgnlRuntime.setSecurityManager(null);
}
}
このリスナは, セキュリティマネジャーをOFFにする設定を書いています。
サーブレットが立ち上がる時に, このセキュリティマネジャーをOFFにする必要が
あります。App Engine ではこれが必要になります。
ex) 結果表示用
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head><title>Hello</title></head>
<body>
<h1>Hello!</h1>
</body>
</html>
4. struts.xml の
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- START SNIPPET: xworkSample -->
<struts>
<package name="default" extends="struts-default">
<action name="hello"
class="com.appspot.struts2.action.HelloAction">
<result name="hello">/WEB-INF/success.jsp</result>
</action>
</package>
</struts>
とくに普通のstrurts2の設定と変わりません。
これで設定は終了です。
このアプリケーションを立ち上げて
http://localhost:8888/hello にアクセスすると, Hello! というタイトルが出ます。
特殊な部分は, リスナを使って, セキュリティマネジャーをOFFにするという操作が必要なだけですね。
以下まとめつくるのにすごく参考になりました。ありがとうございます
返信削除http://www.cyokodog.net/blog/first-appengine-and-struts2/