こんなことで失敗する私の注意力の無さを記録する。
Googleの無料サービスは、制限が厳しくなりつつあるが使い方次第なのだと思う。
自分に反省。
(1)まずはGAEの設定を変える。特にInstancesを「1」。
Administration>Application Settingsで設定変更。
変更しないと、すぐに無料枠を使いきってしまうためらしい。
下記のように設定すれば大丈夫らしいが、よく分からない。
1)Max Idle Instances: ( 1 )
2)Min Pending Latency: ( 15.0s )
※過去バージョンのGAEツール群でデプロイしたままだと、設定変更できなかった。
(2)PleiadesのDataNucleus Enhancerは外しておこう。
勝手に起動して、全く停止してくれないときがある。
コードの保存すら出来なくなってしまう・・・。
プロジェクトのプロパティー>Google>Appエンジン>ORMで、
全部「除去」してしまおう。
※ORM:オブジェクト/リレーショナル・マッピングらしいが、何に使うのか不明。
http://stackoverflow.com/questions/1015727/how-to-turn-off-datanucleus-enhancer-while-working-with-google-app-engine
(3)デバッグのローカルサーバーで動かなくても気にするな。
http://localhost:8888/_ah/admin/inboundmailのローカルサーバーでは
エラーばっかりでも気にするな。
デプロイすれば、うまく動く。・・・こともある。
環境が違うからデプロイすればOKだ。
(4)デフォルトのdoGetだとダメかもしれない。「doPost」にしてみる。
Eclipseの新規で作成するとdoGetの記述となる。
@SuppressWarnings("serial")
public class Mailrestool2Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {...
だけど、メール受信を使うときはPOSTなので「public void doGet」はダメ。
上記は、「public void doPost」に変更する。
GETとPOSTは違うらしい。下記の投稿を読んでやっと気づいた・・・。
http://www.rominirani.com/2009/10/31/episode-6-handling-incoming-email-in-your-application/
これのせいで、Gmailからstring@myappid.appspotmail.comにメール送信すると、
POSTエラーのため、スパム並に何回も送信してきた。
リソースもかなり食われてしまっていた。
(5)Logをしっかりと読もう。
上記に関わることだが、Logの内容を理解できるようにしておこう。
右の3つに注意。status、RequestTime、ResponseSizeだ。
とくにStatusが200以外のときはエラーかもしれないので気をつけよう。
2012-05-11 03:40:11.930 /test 200 75ms 0kb
2012-05-11 03:40:11.930 /test02 405 30ms 0kb
2012-05-11 03:40:11.930 /test03 500 400ms 0kb
(6)デバッグのために変数を知るには、Logに記録する
GAEではファイルに記録するとかの手段が少ないので、手っ取り早く使うのはLogらしい。
import java.util.logging.Logger;
import java.util.logging.Level;
private static final Logger _logmess = Logger.getLogger({CLASSNAME}.class.getName());
を最初のどこかで宣言。下記のようにすれば、Logに変数の中身が記録される。
_logmess.warning("メッセージです!");
_logmess.warning("Subject = " + subject);
※デフォルトの記録レベルはWarning。
ハロの外部記憶インターフェイスさんより
0 件のコメント:
コメントを投稿