ブログの名前にC#としておきながら、最近、その他の内容が多くてすみません。
Google App Engineとクライアント側のC#を組み合わたソフトを作りたくて、Pythonで
あれこれやっていたところ、先週火曜日4月8日に、Google App EngineのJavaサポートが
発表されたため、つい飛びついてしまいました。
しばらく、Javaから遠ざかっていたので、開発環境を整えるところからスタートしました。
JDK1.6をインストールする
Google App EngineのJavaはJava6のJVMを採用しているので、開発する際にもJDKの1.6を使うことが推奨されます。
ただ、どうしても1.6が手に入らない場合は、1.5でも開発できるようです。
私は以下のURLからJDK1.6をインストールしました。
http://java.sun.com/javase/downloads/index.jsp
Eclipse3.4をインストールする
「Google App Engine SDK」とコマンドラインを使って開発することも出来るのですが、やはりEclipseを使った方が断然、便利です。
Eclipse3.3または3.4に対して、Google App EngineのPluginが提供されているので、そのどちらかをインストールします。
私は3.4をインストールしました。インストール作業は以下のURLのサイトを参考にさせていただきました。ありがとうございました!
「金子研究室」
Google Plugin for Eclipseをインストールする
次にGoogle App Engineの開発用プラグインをインストールします。ヘルプ→ソフトウェア更新で以下のURLからインストールします。
http://dl.google.com/eclipse/plugin/3.4
「Google Plugin for Eclipse3.4」と「Google App Engine Java SDK 1.2.0」をインストールすればOKです。
「Google Web Toolkit SDK 1.6.4」は任意です。
インストールする際、Eclipseは他のプラグインとの依存関係をチェックしながらインストールするため、とてもなが~い時間がかかってしまいます。
これを防ぐためには、Google App Engineのロケーションを除く、登録済みのロケーションのチェックを一旦外し、チェックが走らないようにします。
これをすると、すんなりインストールが終わります。

まだ日本語環境をインストール出来ていない状態の画像なので、分かりにくいかもしれませんが、上の画像の[ManageSites..]ボタンの位置にある
ボタンからロケーションの一覧を開けると思います。
プロジェクトを作成する
プラグインをインストールし、Eclipseを再起動すると、ファイルメニューの新規作成にGoogle App Engine用の
Webアプリケーションプロジェクトが表示されるはずですので、それを選んでプロジェクトを作成します。

プロジェクトのフォルダ構成は通常の「動的Webプロジェクト」とは少し異なっているのですが、
Javaに馴染んでいる方であれば、違和感はないと思います。
こんな感じです。
YoutubeのFeedを取得するサーブレットを作成する
前回の記事でPythonで作ったYoutubeのFeedを取得するアプリをJavaで作ってみました。
Feedの取得は、URLクラスを利用して行っています。URLクラスをはじめとするjava.netのクラスは、Google App Engine用の実装が
されているので、実際の処理はGoogle App Engineのインフラストラクチャを使って行われます。
また、Pythonと同じく、SandBox内で実行されるため、以下のような制限があります。
「接続できるポートはHTTP(80)とHTTPS(443)のみ」
Google App Engineへのデプロイ
Google App Engineへのデプロイもとても簡単です。まずは、Google App Engineに登録してアプリケーションIDを取得してください。
そして、「appengine-web.xml」の「application」欄に取得したアプリケーションIDを入力します。

そして、ツールバーのGoogle App Engineマークのアイコンをクリックし、表示されるダイアログにEmailとパスワードを入力して実行します。
これで完了です。

ここで以下のようなエラーが出る場合があります。
これはGoogle App EngineでJavaを使用するための認証が済んでいないために発生するエラーです。
以下のURLから認証出来ます。当面は、先着10,000アカウントに限定するみたいなので、使用されたい方はお早めに。
http://appengine.google.com/promo/java_runtime
しばらく(私は5分くらいでした)待つと、メールが来ますので、その後、再度デプロイすると成功するはずです。
Google App Engineでサーバサイドにおける開発言語の主流であるJavaが使えるようになったことで、
Google App Engineの広がりが加速するのは間違いないと思います。
また、今回のアップデートでcronを利用することも出来るようになりました。これで業務アプリケーションへの
適用もしやすくなったのではと思います。ただ、1リクエスト30秒以内という制限があるので、
処理の粒度の工夫がいるとは思います。
Google App Engineとクライアント側のC#を組み合わたソフトを作りたくて、Pythonで
あれこれやっていたところ、先週火曜日4月8日に、Google App EngineのJavaサポートが
発表されたため、つい飛びついてしまいました。
しばらく、Javaから遠ざかっていたので、開発環境を整えるところからスタートしました。
JDK1.6をインストールする
Google App EngineのJavaはJava6のJVMを採用しているので、開発する際にもJDKの1.6を使うことが推奨されます。
ただ、どうしても1.6が手に入らない場合は、1.5でも開発できるようです。
私は以下のURLからJDK1.6をインストールしました。
http://java.sun.com/javase/downloads/index.jsp
Eclipse3.4をインストールする
「Google App Engine SDK」とコマンドラインを使って開発することも出来るのですが、やはりEclipseを使った方が断然、便利です。
Eclipse3.3または3.4に対して、Google App EngineのPluginが提供されているので、そのどちらかをインストールします。
私は3.4をインストールしました。インストール作業は以下のURLのサイトを参考にさせていただきました。ありがとうございました!
「金子研究室」
Google Plugin for Eclipseをインストールする
次にGoogle App Engineの開発用プラグインをインストールします。ヘルプ→ソフトウェア更新で以下のURLからインストールします。
http://dl.google.com/eclipse/plugin/3.4
「Google Plugin for Eclipse3.4」と「Google App Engine Java SDK 1.2.0」をインストールすればOKです。
「Google Web Toolkit SDK 1.6.4」は任意です。
インストールする際、Eclipseは他のプラグインとの依存関係をチェックしながらインストールするため、とてもなが~い時間がかかってしまいます。
これを防ぐためには、Google App Engineのロケーションを除く、登録済みのロケーションのチェックを一旦外し、チェックが走らないようにします。
これをすると、すんなりインストールが終わります。

まだ日本語環境をインストール出来ていない状態の画像なので、分かりにくいかもしれませんが、上の画像の[ManageSites..]ボタンの位置にある
ボタンからロケーションの一覧を開けると思います。
プロジェクトを作成する
プラグインをインストールし、Eclipseを再起動すると、ファイルメニューの新規作成にGoogle App Engine用の
Webアプリケーションプロジェクトが表示されるはずですので、それを選んでプロジェクトを作成します。

プロジェクトのフォルダ構成は通常の「動的Webプロジェクト」とは少し異なっているのですが、
Javaに馴染んでいる方であれば、違和感はないと思います。
こんな感じです。
[プロジェクト名] |--[src] ・・・ソース |--[war] |--index.html |--[WEB-INF] |--[classes] |--[lib] |--appengine-web.xml ・・・App Engine用の設定ファイル |--web.xml
YoutubeのFeedを取得するサーブレットを作成する
前回の記事でPythonで作ったYoutubeのFeedを取得するアプリをJavaで作ってみました。
@SuppressWarnings("serial") public class RiaMediatorServlet extends HttpServlet { private static final Logger _log = Logger.getLogger(RiaMediatorServlet.class.getName()); public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/xml;charset=UTF-8"); BufferedReader reader = null; PrintWriter writer = null; try { writer = new PrintWriter(new OutputStreamWriter(resp.getOutputStream(),"UTF-8")); URL url = new URL("http://gdata.youtube.com/feeds/api/standardfeeds/recently_featured?start-index=1"); reader = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8")); String line; while( (line = reader.readLine()) != null) { writer.println(line); } } catch(Exception ex) { _log.severe(ex.toString()); } finally { try { if(reader != null) { reader.close(); } } catch(Exception ex){} try { if(writer != null) { writer.close(); } } catch(Exception ex){} } } }
Feedの取得は、URLクラスを利用して行っています。URLクラスをはじめとするjava.netのクラスは、Google App Engine用の実装が
されているので、実際の処理はGoogle App Engineのインフラストラクチャを使って行われます。
また、Pythonと同じく、SandBox内で実行されるため、以下のような制限があります。
「接続できるポートはHTTP(80)とHTTPS(443)のみ」
Google App Engineへのデプロイ
Google App Engineへのデプロイもとても簡単です。まずは、Google App Engineに登録してアプリケーションIDを取得してください。
そして、「appengine-web.xml」の「application」欄に取得したアプリケーションIDを入力します。

そして、ツールバーのGoogle App Engineマークのアイコンをクリックし、表示されるダイアログにEmailとパスワードを入力して実行します。
これで完了です。

ここで以下のようなエラーが出る場合があります。
Creating staging directory Scanning for jsp files. Scanning files on local disk. Initiating update. Unable to upload: java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=riamediator&version=1& 400 Bad Request Invalid runtime specified. at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:114) at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:66) at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:345) at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java:159) at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:68) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:41) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:203) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:97) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=riamediator&version=1& 400 Bad Request Invalid runtime specified.
これはGoogle App EngineでJavaを使用するための認証が済んでいないために発生するエラーです。
以下のURLから認証出来ます。当面は、先着10,000アカウントに限定するみたいなので、使用されたい方はお早めに。
http://appengine.google.com/promo/java_runtime
しばらく(私は5分くらいでした)待つと、メールが来ますので、その後、再度デプロイすると成功するはずです。
Google App Engineでサーバサイドにおける開発言語の主流であるJavaが使えるようになったことで、
Google App Engineの広がりが加速するのは間違いないと思います。
また、今回のアップデートでcronを利用することも出来るようになりました。これで業務アプリケーションへの
適用もしやすくなったのではと思います。ただ、1リクエスト30秒以内という制限があるので、
処理の粒度の工夫がいるとは思います。
コメント
コメントの投稿
トラックバック
http://csfun.blog49.fc2.com/tb.php/45-92a95681