SSブログ

【雑記】 Google App Engine for Java in NetBeans (2) [自作アプリ]

以前に NetBeansで Google App Engine for Javaを使おうという記事を書きましたが
その後に実際に簡単な Webアプリを作ってGoogleのサーバーに Uploadしました。

何を作ったかというと、チャットです。
でも、動かしてみたら想定とは違う動きをしました。

▲ チャットルーム
http://luna-apps3.appspot.com/

今回、このアプリを作ろうと思ったのはデータベースやファイルという
不揮発性のメディアを使わないでチャットを作れないか?というのが発端です。

じゃあ、どこにログを保存するのかというとサーバーのメインメモリです。
Webアプリはその特性上、サーバーのメインメモリに居座り続けます。
なら、そこに Staticな配列を定義してログを持っていればいいのではないかと思いました。

その想定の元にコーディングしてコンパイルしてサバに上げたのですが
ちょっと動かしてみると、最初のうちは何行か保存されたのですが
ある一定以上の時間が経つとクリアされちゃうんですよね。

まるで時間経過でメモリをクリアして変数の中身を消しているような。

でも、Googleの技術文書を検索してみましたが
プログラム内で Static変数を定義して値を代入した場合は
値の生存期間を保証しませんみたいなことは見つけられませんでした。

この動きはなんなのか、謎です。

ググっても分からないので、これ以上ブラックボックスの中のことを調べても
徒労に終わりそうだったので、早々に切り上げてあきらめました。

やっぱり自分で好きに自由にやるには、自宅にサーバーを立てるしかないんでしょうか。
無料でレンタルで自由に、というオイシイ話はなかなか無いですね。

Google Appのサーバー上ではファイルの読み込みは可能でも
ファイルの書き込みは不可能なようです。
なので、ファイルに書き込んで値を保持するのもできない。
データストアはよく分からない。

というわけで、お手軽にやるのはムリそうです・・・。

JAVAのソースコードやらは晒しません。
自分の書いたソースコードって晒すのが恥ずかしいですしね。

オマケで NetBeansから Google Appのサーバーにデプロイするときに
エラーが出て困ったのですが、自己解決したので参考になるか分かりませんが
載せておきます。

Google App用のプロジェクトを作ると右クリックから
Google Appのサーバーにデプロイするという機能が使えます。

最初にIDとパスが聞かれますので GoogleのアカのIDとパスを入力します。

すると、裏でパッケージングやらが始まってアップロードまでやってくれます。
しかし、私がやったときはエラーが出て成功しませんでした。

ちなみに、エラーメッセージはこんな感じ。

Client Error (400)
The request is invalid for an unspecified reason.
at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:149)
at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:82)
at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:582)
at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java:400)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:112)
at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:56)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:547)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:138)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:61)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:57)
com.google.appengine.tools.admin.AdminException: Unable to update app: Error posting to URL:
400 Bad Request

どうやら上げ先の指定に問題があるようです。

設定系のファイルを漁ってみたら
・appengine-web.xml
・web.xml
が怪しい。

特に appengine-web.xmlの方は Google App用のプロジェクトに特有なファイルなので
中を開けて読んでみたら appengine-web-appタグの直下に applicationタグがありました。

このタグの値はプロジェクト名になっていたのですが、
エラーログと照らし合わせると、どうやらココの文字列から
上げ先の URLを生成しているようなので、試しに Google App上で発行した
アプリケーションIDを入力してみました。

すると・・・、アップロードが成功しました。
マニュアルも無しに手掛かりだけから推理して解決するなんて、オレってすごくね?

01.jpg

<開発環境>
OS : Kubuntu Linux 10 (in VMware)
IDE : NetBeans 6.9.1 (for Linux)
PG Language : JAVA
PG Library : Google App Engine for Java
Browser : Google Chrome 6 (for Linux)
Keyboard : Happy Hacking Keyboard Lite2 (US)

▲ 【雑記】 Google App Engine for Java in NetBeans
http://lunablog.blog.so-net.ne.jp/2010-09-27-1

nice!(20)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 20

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。