FAQの翻訳
GAE/Jと英語の両方を勉強中なので、勉強がてら訳してみた。といっても要約がメインです。
原文:http://code.google.com/intl/ja-JP/appengine/kb/java.html
GAE上でお気に入りのフレームワークを使いたいのですが
利用可能なものはここに掲載しています。
http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1
VM上でどのプログラミング言語が使えるのでしょうか
同じくここに掲載しています。
http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1
ファイル読み込みがうまくいかないのですが
あなたのアプリケーションの以下の場所にあるファイルなら読み込むことができます。
- war/WEB-INF
- appengine-web.xmlの
に定義されている場所
もしファイルの配置場所が問題ないのにエラーが起こっている場合は、ファイル読み込みメソッドに問題があるかもしれません。
File, FileInputStream, FileReader, RandomAccessFileが利用できるファイル読み込みクラスです。
以下がGAE上で使用できるJavaのクラスファイル一覧です。ここにリストアップされていないクラスを使っていないか確認してください。
http://code.google.com/intl/ja-JP/appengine/docs/java/jrewhitelist.html
なお、jarファイルにプロパティファイルのようなリソースを含めた場合は、ClassやClassLoaderを使用して読み込んでください。
ファイル書き込みは利用できますか
できません。
代わりに、App Engine データストアに永続化してください。詳しくは以下を参照のこと。
http://code.google.com/intl/ja-JP/appengine/docs/java/runtime.html#The_Sandbox
スレッドは利用できますか
できません。詳しくは以下を参照のこと。
http://code.google.com/intl/ja-JP/appengine/docs/java/runtime.html#The_Sandbox
既にPythonのアプリケーションがあるんですが、そちらのデータにアクセスすることはできますか
はい、Javaコードからアクセスすることができます。プロパティ名などは言語を超えて同じものとなっています。
同じアプリケーション内でJavaとPythonのコードを実行することは出来ますか
はい、可能です。
バージョン xはJavaで実行し、バージョン yは(Jythonを使って)Pythonで実行するといったことが可能です。
ログ出力時にUserServiceFailureExceptionが出たのですが
アプリケーションがGoogle Appsドメインに連携している場合、Google Appsアカウントのサブドメイン上のアプリケーションにアクセスしなければなりません。
example.comがあなたのGoogle Appsドメインなら、例えばwww.example.comのようなサブドメインを作る必要があります。
全てのリクエストハンドラが初期化失敗例外(Initialization failed exception)を出すんですが
JSPを事前にコンパイルしていると発生するかもしれません。
Jasperを使ったJSPの事前コンパイルをしているなら、以下のjarファイルをWEB-INF/libに配置してください。
- commons-logging-api-1.1.1.jar (or later)
- commons-el.jar
- jasper-runtime.jar
ELとloggingは使っていなくても必要ですので注意してください。
JavaEEをサポートしていますか
全てではありませんが、多くのコンポーネントをサポートしています。詳しくは以下を参照してください。
http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine
※例えば、JSP、Servlet、JavaMail、JSFなどをサポート。EJBやJMX、JDBCなどはサポートしてない。
ファイルアップロードはどうすればいいですか
Apache Commons file uploadパッケージのクラスを使ってmultipart formデータを取得できます。
※FileItemStream, FileItermIterator, ServletFileUploadを使った例が示されています。
参考:
ローカルで開発する時に、既に8080ポートを使っているんですが、変更できますか
可能です。
--port=希望のポート番号
もしくは、antのターゲットファイルに以下のように設定してください。
GAE上でGoogle Data APIライブラリを使用できますか
利用できます。
ただし、権限エラーを避けるために以下のような設定をappengine-web.xmlファイルに追加してください。
Google Data APIライブラリの詳細は以下。
http://code.google.com/p/gdata-java-client/
Eclipseプラグインがうまく動かないんですが
Error Logビュー(Window - Show View - Other...を選択し、General - Error Log)で確認してください。
アプリケーションのアップロード時に「Invalid runtime specified」が出るのですが
アカウント認証で失敗している可能性があります。今は10,000人しか利用できないという制限があります。
appcfgのEmail引数が動いていないようですが
Emailコマンドライン引数はappcfgオペレーションの前に指定されなければなりません。
例えば以下のように。
appcfg.sh -e youremail@example.com update app_directory/war