2009/11/29
GAE/Jを使ってみた。
公開サーバが欲しいって話を一昨日書いたら知人から
Google App Engine はどうよ、ってメールが来た。
で、ちょっと調べてみた。
制限は有る物の普通の Servletサーバ±α って感じの物らしい。
ローカルで実行できる環境も用意されている。
じゃあやって見るかと言うことでダウンロード。
http://code.google.com/intl/ja/appengine/downloads.html#Google_App_Engine_SDK_for_Java 展開して取り合えずデモを実行してみる。
サーバは jetty ベースのようなので普通にServletが動きそう。
と言うわけで WSJSを乗せて見ることにした。
グーグルのチュートリアルを見ながら進めて行くとまず、設定ファイルが2つ必要らしい。
- web.xml : 普通の web.xml。
- appengine-web.xml : GAE 専用、内容はこれだけで良い。
取り合えずこれで実行... 怒られた。
CPUMonitorは無くても良いのでコメントアウトして再起動。 起動はしたがアクセスしたら、怒られた。
webapps/ を WEB-INF/docroot/ に移動して再起動。
でもJSCPやEXJSは動かない。
この辺を読むと静的ページはサーブレットを通さないとか書いてある。
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/staticfiles.html
全部のページを WEB-INF/docroot/ に置くようにしてみた。 JSCPは動いたがEXJSにアクセスするとエラー。
ちょっとググったら出て来た。
http://d.hatena.ne.jp/bluerabbit/20090925/1253884096
apache.org から落して来た XSLT の jar を lib に入れるだけ。
で、再起動。 EXJSも動いた。
WSJSとして最低限の機能は動作したがさすがにDBとファイルへの書き込みは逃げようが無い。 ストレージとして JDO と言う機能が提供されているのでこれに乗り換えるしか無さそう。 そんなに難しくはなさそうなのでサポートはしようと思う。 しかし公開サーバと言う意味では GAE はちょっと窮屈な感じが否めない。
やっぱり何でもできる自前のサーバが欲しい..
制限は有る物の普通の Servletサーバ±α って感じの物らしい。
ローカルで実行できる環境も用意されている。
じゃあやって見るかと言うことでダウンロード。
http://code.google.com/intl/ja/appengine/downloads.html#Google_App_Engine_SDK_for_Java 展開して取り合えずデモを実行してみる。
> bin/dev_appserver.sh demos/guestbook/warhttp://localhost:8080/ にアクセスすると何かそれっぽい物が動いている。
サーバは jetty ベースのようなので普通にServletが動きそう。
と言うわけで WSJSを乗せて見ることにした。
グーグルのチュートリアルを見ながら進めて行くとまず、設定ファイルが2つ必要らしい。
- web.xml : 普通の web.xml。
- appengine-web.xml : GAE 専用、内容はこれだけで良い。
取り合えずこれで実行... 怒られた。
2009/11/28 11:34:39 com.google.apphosting.utils.jetty.JettyLogger warn : Error starting handlers java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory is a restricted class. Please see the Google App Engine developer's guide for more details. at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51) at kotemaru.util.CPUMonitor.ここで何をやっているかと言うと com.sun.management.OperatingSystemMXBean のインスタンスを生成している。 com.sun.* は制限っぽい。まあ、しょうがないだろう。(CPUMonitor.java:11) at kotemaru.wsjs.WsjsServlet.localInit(WsjsServlet.java:36) at kotemaru.wsjs.WsjsServlet.init(WsjsServlet.java:22)
CPUMonitorは無くても良いのでコメントアウトして再起動。 起動はしたがアクセスしたら、怒られた。
java.security.AccessControlException: access denied (java.io.FilePermission /home/inou/wsjs/webapps/wsjs/.link read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)んー、この辺は予想通り。
webapps/ を WEB-INF/docroot/ に移動して再起動。
また、怒られた。
java.lang.RuntimeException: Session support is not enabled in appengine-web.xml. To enable sessions, put言われるがままに設定追加して再起動。 今度はトップページが出た。思ったより順調true in that file. Without it, getSession() is allowed, but manipulation of sessionattributes is not.
でもJSCPやEXJSは動かない。
この辺を読むと静的ページはサーブレットを通さないとか書いてある。
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/staticfiles.html
全部のページを WEB-INF/docroot/ に置くようにしてみた。 JSCPは動いたがEXJSにアクセスするとエラー。
エラー: 'Could not initialize class com.sun.org.apache.bcel.internal.util.SyntheticRepository' 致命的エラー: 'スタイルシートをコンパイルできませんでした' javax.xml.transform.TransformerConfigurationException: スタイルシートをコンパイルできませんでした at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:825) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:614)標準のXSLTが制限クラスを使っているらしい。
ちょっとググったら出て来た。
http://d.hatena.ne.jp/bluerabbit/20090925/1253884096
apache.org から落して来た XSLT の jar を lib に入れるだけ。
で、再起動。 EXJSも動いた。
WSJSとして最低限の機能は動作したがさすがにDBとファイルへの書き込みは逃げようが無い。 ストレージとして JDO と言う機能が提供されているのでこれに乗り換えるしか無さそう。 そんなに難しくはなさそうなのでサポートはしようと思う。 しかし公開サーバと言う意味では GAE はちょっと窮屈な感じが否めない。
やっぱり何でもできる自前のサーバが欲しい..
この投稿へのコメント
コメント・フォーム