アーカイブ

‘eclipse’ カテゴリーのアーカイブ

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

2009 年 10 月 31 日 tdtsh コメントはありません

GAE/J で Apache Velocity は動く

わたしにとってGAE/Jをガンガン使えるか否かは、Apache Velocityが動くかどうかに強く依存しています。
他のテンプレートエンジンを触ったことないし、JSPは絶対イヤだからです。

Will it play in App Engine – Google App Engine for Java | Google GroupsにはVelocityのことは書かれていてない(2009年10月30日現在)。

結論から言うとGAE/JでVelocityは動きます。すでに動かしちゃってる先人の方もいらっしゃる様です。
ちょっと安心です。

GAEにデプロイしたサンプルはこちら
http://tdtsh-blog.appspot.com/velocity/top.vm


インストール手順

今個人的に使っているのは、velocity-1.4 と velocity-tools-1.1 なんですが、この際だから最新にしちゃいます。
Downloads – Apache Velocity Siteから、

velocity-1.6.2.zip
velocity-tools-1.4.zip

をダウンロードします。

ダウンロードした2つのzipをローカルのどっかに解凍します。

解凍したディレクトリから、jarファイルを、eclipseのプロジェクトのwar/WEB-INF/lib/にコピーします。

velocity-1.6.2\velocity-1.6.2.jar
velocity-tools-1.4\lib\velocity-tools-1.4.jar

ここまでで実行すると、依存性が解決できずに (org.apache.commons達) Exceptionはきまくりでした。
細かい依存性の管理については後回しにして、velocity-tools-1.4\lib\ の下の、commons-* を片っ端からeclipseのプロジェクトのwar/WEB-INF/lib/にコピーしました。

こいつらです。
commons-beanutils-1.7.0.jar
commons-chain-1.1.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-lang-2.2.jar
commons-logging-1.1.jar
commons-validator-1.3.1.jar

最終的に、依存性は maven で管理したいなぁ、と思います。


動かしてみる

先ずは、クラス my.package.VelocityServlet として、org.apache.velocity.tools.view.servlet.VelocityViewServlet を拡張してクラスを作ります。とりあえずは何も実装しなくていいです。

war/WEB-INF/web.xmlを修正して、こんな感じにしました。

<servlet>
	<servlet-name>velocity</servlet-name>
	<servlet-class>
		my.package.VelocityServlet
	</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>velocity</servlet-name>
	<url-pattern>/velocity/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
	<servlet-name>velocity</servlet-name>
	<url-pattern>*.vm</url-pattern>
</servlet-mapping>

それから、VMファイルはサーブレットからアクセス出来る必要があるので、war/WEB-INF/appengine-web.xmlを修正して、リソースファイルとして設定しておきます。今回はこんな感じにしました。

<resource-files>
	<include path="/velocity/*" />
</resource-files>

war/velocityディレクトリを作成し、その中に test.vm ファイルを作成します。
中身はなんでもいいんですが、簡単にテストする方法としては、VTLでのコメントを書けばいいです。

<html>
<body>
	<h1>Test VelocityServlet</h1>
	## if you see this message, VelocityViewServlet might not work.
</body>
</html>

http://localhost:8080/velocity/test.vm にアクセスします。

404エラーや500エラーなら、何かの設定が間違っています。
if you see… が表示されたなら、静的ファイルとして読まれているかもしれません。
(VelocityViewServletがリクエストを正しく処理していれば、if you see… の部分は見えません)

今回は、VM_global_library.vm とか velocity.properties のことには触れていないけど、リソースファイルとして配備すればもちろん使えます。encodingをきちんと設定すれば、日本語もちゃんと使えます。

カテゴリー: Google App Engine, eclipse, java, クラウド タグ:

Google App Engine SDK for java でデプロイ

2009 年 10 月 28 日 tdtsh コメントはありません

前回インストールした、Google App Engine SDK for javaを使って、コマンドラインでデプロイしてみる。

参考サイトの例に応用をきかせて、今回は SDKとは別ディレクトリに存在する Eclipseのワークスペース上のWARディレクトリを、デプロイします。

※開発機はWindows XPです。

cd %GAE_HOME%

bin\appcfg.cmd update “c:\Documents and Settings\myname\workspace\myapp\war” –sdk_root=”c:\Documents and Settings\myname\workspace\myapp”

Email: と聞かれるので、GAEアカウントのメールアドレスを入力。

Password for xxxx@gmail.com: と聞かれるので、GAEアカウントのパスワードを入力。

・・・う~ん、ちょっとめんどくさい。
このへんは最終的には Antタスクでやるつもり。

バッチ化して開発者(WEBデザイナ含む)に配布出来ないかな、と思ってはみたものの、やはり使いやすさ・説明のし易さ共にeclipseに軍配があがりますね。

参考サイト

アプリケーションのアップロード – Google Code

カテゴリー: Google App Engine, eclipse, java, クラウド タグ:

GAE/J で WARNING Can not serve hoge.html directly. You need to include it in <static-files> in your appengine-web.xml

2009 年 10 月 25 日 tdtsh コメントはありません

Google App Engine for Java (GAE/J) で、静的ファイル ( html、css、js ) を扱おうとして、

WARNING: Can not serve /hoge/hoge.nocache.js directly. You need to include it in in your appengine-web.xml.

てな感じで怒られる。

appengine-web.xml の書き方が間違っているらしい。


<static-files>
	<include path="/**.html" />
	<include path="/**.css" />
	<include path="/**.js" />
</static-files>

こう書いてたけど、これではルート直下のんしか駄目らしい。

ルート以下の任意のサブディレクトリの下にも適用するには、


<static-files>
	<include path="**.html" />
	<include path="**.css" />
	<include path="**.js" />
</static-files>

こっちが正解らしい。

カテゴリー: Google App Engine, eclipse, java タグ:

GAE/J で HTML (静的ファイル) を

2009 年 10 月 24 日 tdtsh コメントはありません

Google App Engine for Java (GAE/J) で、まずはHTMLファイルをデプロイだ!

つまづいた事 その1

GAE/J での開発は、eclipseのプラグインで始めてます。
まず eclipse に慣れてないもんで、素のHTMLファイルってどう扱うかでつまづいた。
JSPとかjavaとかは、workspaceのディレクトリに直接作って編集したりしているもんだから、そのノリでHTML作っても、Javaパースペクティブのパッケージ・エクスプローラに出現しない。
よく判らないけど、eclipse のパッケージ・エクスプローラ上で右クリック – [新規] – [ファイル] でもって、HTMLを作成したら、ちゃんとパッケージ・エクスプローラにも表示されました。

つまづいた事 その2

Google Codeを読んだ。
warフォルダ直下にhtdocsディレクトリを作成し、その中にHTMLファイルを作成した。
HTMLを静的ファイルとして明示的に扱う様に、web.xmlを編集した。

<static-files>
	<include path="/htdocs/**.html" />
</static-files>

良く読んでから気づいたけど、web.xml じゃなくって appengine-web.xml だった。
先入観でやったら駄目ですね。

カテゴリー: Google App Engine, eclipse, java タグ:

eclipse(Ganymede) で ArrayList は raw 型です。 総称型 ArrayList への参照は、パラメーター化する必要があります

2009 年 10 月 23 日 tdtsh コメントはありません

JDK 1.4時代の古いJavaアプリケーションをeclipse(Ganymede)に持ってくると、

ArrayList は raw 型です。 総称型 ArrayList への参照は、パラメーター化する必要があります

的な警告が、それはそれはものすごく沢山でた。

JDK5以降は、ジェネリクス(総称型)でコンパイル時に型をチェック出来るので、キャスト地獄から開放されるわけだけど、
あまりに量が多くて対応してらんない。

仕方ないから、警告が出ない様にしました。

[ウィンドウ]→[設定]→[Java]→[コンパイラー]→[エラー/警告]→[総称型]→[raw型の使用]

[無視]に変更

カテゴリー: eclipse, java タグ: