内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
•
rvm
•
php
•
ios
•
markup
gae:java
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Google App Engine for Java ====== Java言語で開発する[[:GAE]]アプリについてのメモ Google App Engine for Java (GAE/J) アプリケーションは、サーブレットエンジン上で動くWebアプリケーションであり、標準仕様であるサーブレットAPIとJSPを使って開発する。BigTableには、JDOまたはJPAのAPIを使ってアクセスする。ただし全て標準のAPIのみで開発するのは難しく、ほとんど全てのケースにおいて、GAE/J独自のクラスを使用することになるだろう。 ===== フレームワーク ===== GAEの制限のため既存のJavaEEフレームワークを動作させるのは難しい。現在、Seasarプロジェクトで[[http://code.google.com/p/slim3/|Slim3]]というGAEに最適化されたフレームワークが開発されている。 ===== サーブレットとJSP ===== Servlet 2.5、JSP 2.1仕様のAPIが利用できる。 デフォルトではHttpSessionオブジェクトが使えないようになっている。HttpSessionを有効にするにはWEB-INF/appengine-web.xmlファイルの以下の項目をtrueに設定する。 <code xml> <sessions-enabled>true</sessions-enabled> </code> いくつかのJSTLのタグはセッションを使うので、有効にしないとエラーになる場合がある。セッションはMemcacheまたはBigTableに保存されるらしく、パフォーマンスやスケーラビリティを気にする事なく使えそうだが、デフォルトオフということは何かペナルティがあるのかもしれない…。 ===== ユーザ ===== Googleアカウントをユーザ認証に使う事ができる。またはGoogle Appsアカウントも使用できる。両方同時に使う事はできない。また不特定のGoogle Appsアカウントを使う事もできず、現在のところ1アプリで1つのGoogle Appsドメインのみ利用可能。 認証すれば、HttpServletRequest#getUserPrincipalや HttpServletRequest#getRemoteUserなどのサーブレットAPIを利用できるが、普通は以下のようにしてGoogleアカウントのユーザデータを取得する。 <code java> UserService userService = UserServiceFactory.getUserService(); User uesr = userService.getCurrentUser(); </code> このUserオブジェクトはJDOを通してBigTableに保存可能である。ユーザ毎にデータを保存したければエンティティにUserのフィールドを追加すればいい。 ==== ログイン判定 ==== userがnullかどうかで判定すればいい。 <code java> UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); if (user == null) { res.sendRedirect(userService.createLoginURL(req.getRequestURI())); } </code> なお、UserService#isUserLoggedInメソッドは、一人以上のユーザが現在ログイン状態であるかチェックするメソッドで、このユーザがログイン状態であるか調べるメソッドではない。テスト環境ではこのメソッドでチェックしても問題ないように見えるので要注意。 特定のURLを認証するには、普通にweb.xmlに記述すれば良い。 <code xml> <security-constraint> <web-resource-collection> <web-resource-name>Staff Only</web-resource-name> <url-pattern>/note/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>*</role-name> </auth-constraint> </security-constraint> </code> role-nameは*またはadminを指定できる。 ==== 管理ユーザ ==== 管理ユーザの判定 <code java> if (UserServiceFactory.getUserService().isAdminUser()) { System.out.println("管理ユーザです"); } </code> 管理ユーザでログインすると admin というロール名が設定される? web.xmlやHttpServletRequest#isUserInRole等でadminを調べれば良いらしい?
gae/java.txt
· 最終更新: 2009/06/19 10:53 by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ