EclipseでGAE+Slim3による開発
EclipseをNeonにアップデートしたら、Slim3のプラグインが入手不能で簡単に開発に着手できなかった。
動かすまでにちょっと手間取ったので、手順をまとめておく。
準備
まずはこれの前に書いた手順でGoogle Cloud APIを使えるようにする。
≫ Eclipse Neon で Google Cloud API を使えるようにするまで - 今日の役に立たない一言 − Today’s Trifle! −
次に slim3-blank-1.0.16.zip を入手して、適当な場所に解凍。
必要なファイルをコピー
slim3-blank-1.0.16.zip を解凍した中から、以下のファイルとフォルダを新規作成したプロジェクトにコピーする。
XMLファイルの変更
war/WEB-INF/appengine-web.xml に11行目と14行目の2行を追加。
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application></application> <version>1</version> <!-- Allows App Engine to send multiple requests to one instance in parallel: --> <threadsafe>true</threadsafe> <precompilation-enabled>true</precompilation-enabled> <!-- Configure java.util.logging --> <system-properties> <property name="slim3.hotReloading" value="true"/> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties> <!-- HTTP Sessions are disabled by default. To enable HTTP sessions specify: <sessions-enabled>true</sessions-enabled> It's possible to reduce request latency by configuring your application to asynchronously write HTTP session data to the datastore: <async-session-persistence enabled="true" /> With this feature enabled, there is a very small chance your app will see stale session data. For details, see https://cloud.google.com/appengine/docs/java/config/appconfig#Java_appengine_web_xml_Enabling_sessions --> </appengine-web-app>
war/WEB-INF/web.xml に、slim3-blank-1.0.16.zip を解凍した中にある web.xml の<web-app>内の要素を全て追加する。(先頭の context-param から最後の security-constraint まで)
先頭にある slim3.rootPackage の param-value の値に、作成するパッケージ名を入力する。
<context-param> <param-name>slim3.rootPackage</param-name> <param-value>slim3</param-value> </context-param> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> <param-value>application</param-value> </context-param> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.request.charset</param-name> <param-value>UTF-8</param-value> </context-param> <filter> <filter-name>HotReloadingFilter</filter-name> <filter-class>org.slim3.controller.HotReloadingFilter</filter-class> </filter> <filter> <filter-name>DatastoreFilter</filter-name> <filter-class>org.slim3.datastore.DatastoreFilter</filter-class> </filter> <filter> <filter-name>FrontController</filter-name> <filter-class>org.slim3.controller.FrontController</filter-class> </filter> <filter-mapping> <filter-name>HotReloadingFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <filter-mapping> <filter-name>DatastoreFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <filter-mapping> <filter-name>FrontController</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> <servlet> <servlet-name>GlobalTransactionServlet</servlet-name> <servlet-class>org.slim3.datastore.GlobalTransactionServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- <servlet> <servlet-name>GWTServiceServlet</servlet-name> <servlet-class>org.slim3.gwt.server.rpc.GWTServiceServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> --> <servlet> <servlet-name>KtrWjrServiceServlet</servlet-name> <servlet-class>bufferings.ktr.wjr.server.service.KtrWjrServiceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GlobalTransactionServlet</servlet-name> <url-pattern>/slim3/gtx</url-pattern> </servlet-mapping> <!-- <servlet-mapping> <servlet-name>GWTServiceServlet</servlet-name> <url-pattern>*.s3gwt</url-pattern> </servlet-mapping> --> <servlet-mapping> <servlet-name>KtrWjrServiceServlet</servlet-name> <url-pattern>/ktrwjr/ktrwjr/ktrwjr.s3gwt</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <url-pattern>/slim3/gtx</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <url-pattern>/ktrwjr/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>
url-pattern を書いてある3箇所にエラーが出るので、それぞれの前の行に web-resource-name を適当に追加する。
<security-constraint> <web-resource-collection> <web-resource-name>jsp</web-resource-name> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>slim3</web-resource-name> <url-pattern>/slim3/gtx</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>ktrwjr</web-resource-name> <url-pattern>/ktrwjr/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>
プロジェクト設定の変更
Javaコンパイラーを1.7にする。
プロジェクト・ファセットのJavaのバージョンを1.7にする。
ビルドパスに以下の jar を追加する。
- slim3-1.0.16.jar
コントローラの作成
build.xml の gen-controller を選択して ANTビルドを実行し、コントローラを作成。ここではURLに「/home/」と指定した。
Jettyの起動
[実行]-[Webアプリケーション]でJettyを起動。