どんぐりでもできる Eclipse 3.5 GAE/J Slim3 Datastoreの環境構築

※2010/4/10 Slim3正式版リリースに伴い、記述をUpdateしました。

Pleiadesがぶっ壊れた、重い等諸々の理由により、素のEclipseGoogle App Engine for Java(GAE/J)の環境をそろえる事にしたので覚え書き
ついでにJDOが意味不明なのでSlim3 Datastoreを使ってみる



0.JRE/JDKインストール
http://java.com/ja/download/
http://java.sun.com/javase/downloads/widget/jdk6.jsp



1.Eclipse DL
http://www.eclipse.org/downloads/
Eclipse IDE for Java Developers をDL
解凍してeclipseフォルダをC:\の直下に置く



2.言語パック
http://www.igapyon.jp/blanco/nlpack/eclipse/index.html
からEclipse IDE for Java DevelopersをDL
解凍してeclipseフォルダを上書き



3.GAE/Jのインストール
Eclipse起動してヘルプ→新規ソフトウェアインストール
作業対象 http://dl.google.com/eclipse/plugin/3.5 で追加
名前はGAEとか何とか適当に
PluginとSDK両方にチェックを入れ次へを押しまくり、インストール



4.Subversionプラグインインストール
ヘルプ→新規ソフトウェアインストール
作業対象 Galileo - http://download.eclipse.org/releases/galileo 選択
Collabration → Subversive SVN Team Provider (Incubaion) にチェック
次へ でインストール
再起動後 ヘルプ→新規ソフトウェアインストール
作業対象 http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/ で追加
名前はSVN Connectorsとか何とか適当に
Subversive SVN Connectors → SVNKit 1.3.0 Implemenation (Optional) にチェック



5.New Web Application Projectを押してプロジェクト作成
GWTのチェックは外す



6.Slim3ダウンロード&インストール
http://code.google.com/p/slim3/downloads/list
最新のをダウンロード
適当な所で解凍
lib/slim3-gen-1.X.X.jar を
プロジェクト直下にlibフォルダを作り、そこに格納
war/WEB-INF/lib/slim3-1.X.X.jar を
プロジェクト配下の war/WEB-INF/lib に格納



7.Slim3設定
メニューのウインドウ→設定→一般→ワークスペース で「自動的にリフレッシュ」にチェック。
プロジェクトのプロパティより
Javaコンパイラ→注釈処理 で
「プロジェクト固有の設定を可能にする」 に チェック。
生成されるソース・ディレクトリー を generated にする。
Javaコンパイラ→注釈処理→ファクトリーパス で
「プロジェクト固有の設定を可能にする」 に チェックし、
JARの追加で lib/slim3-gen-1.X.X.jar を追加
ビルダー で Enhancer のチェックを外す。
Javaのビルド・パス で JARの追加 を押し
war/WEB-INF/lib/slim3-1.X.X.jar
を追加。
web.xmlに以下のフィルタを追加

<filter>
    <filter-name>datastoreFilter</filter-name>
    <filter-class>org.slim3.datastore.DatastoreFilter</filter-class>
</filter>

<filter-mapping>
        <filter-name>datastoreFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
</filter-mapping>

参考サイト 詳しく書いてあります。
http://d.hatena.ne.jp/hidemon/20100212/1266006576
http://songofcloud.gluegent.com/2009/11/slim3-datastore2.html



8.動作確認
以下のような簡単なエンティティクラスを作成

package slim3test;

 import org.slim3.datastore.Attribute;  
 import org.slim3.datastore.Model;  
   
 import com.google.appengine.api.datastore.Key;  
   
 @Model  
 public class Hoge {  
       
     @Attribute(primaryKey = true)  
     private Key id;  
   
     private String msg;  
   
     public Key getId() {  
         return this.id;  
     }  
   
     public void setId(Key id) {  
         this.id = id;  
     }  
   
     public String getMsg() {  
         return this.msg;  
     }  
   
     public void setMsg(String msg) {  
         this.msg = msg;  
     }  
 } 

次に標準のServletを以下のように書き換え

package slim3test;

import java.io.IOException;
import javax.servlet.http.*;

import org.slim3.datastore.Datastore;
import org.slim3.datastore.EntityNotFoundRuntimeException;

import com.google.appengine.api.datastore.Key;

@SuppressWarnings("serial")
public class Slim3testServlet extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {
		int id;
		id = 1;
		
		Key key = Datastore.createKey(Hoge.class, id);
		Hoge hoge = new Hoge();
		hoge.setId(key);
		hoge.setMsg("Hello, Slim3 Datastore!");
		Datastore.put(hoge);
		
		HogeMeta meta = new HogeMeta();
		
		try{
			Hoge item = Datastore.get(meta,key);
			
			resp.setContentType("text/plain");
			resp.getWriter().println(item.getMsg());
		}
		catch(EntityNotFoundRuntimeException e){
			
		}
		
		
	}
}

実行→Web Application してみてHello, Slim3 Datastoreが出ればOK



以上です。
Slim3 Datastore シンプルです。すごいよ!勉強しよっと。



SIerにいた頃は、よく環境構築手順書を「どんぐりでもできる」シリーズとして
せこせこ作ってたな・・・
ちなみにGAE/Jはこの本が基本を良く押さえててわかりやすかった。
課金の仕組みや基本の考え方など、最初に読むにはいいと思う