火曜日, 4月 06, 2010

【Google App Engine】 開発環境で失敗するのにプロダクション環境で成功する件 このエントリーを含むはてなブックマーク


 先日、GDataAPI を非同期に実行するライブラリを公開したのだが、これを作っているときに不思議な現象に出くわしたのでメモっておく。


 * 開発環境ではちゃんと動くのにプロダクション環境では動かない。

  原因 => HTTPヘッダの判断をcase-sensitiveにしていたから。開発環境では、HTTPヘッダ Content-Type で返すが、プロダクション環境は content-type で返す。(o≧3≦o)


 これはまあ、100歩譲って許してもいいけど、問題は以下のケース。


 * プロダクション環境で動くのに開発環境では動かない

  原因 => problem in dev environment using PUT with java.net.HttpURLConnectionにあるように、PUTメソッドを発行すると、「Entity enclosing requests cannot be redirected without user intervention」が発生してエラーとなる。解決策は、commmons-httpclient-3.0のEntityEnclosingMethod.javaを修正して、lib/impl/appengine-api-stubs.jarに組み込めとのこと。(そんなん、やってられるかよ)
 GDataAPIを使ってコンテンツ登録に失敗している方がいたら、とりあえず、プロダクション環境でも試してみることをおすすめする。



 今後はプロダクション環境が私のテスト環境となる予定である。( ̄ー+ ̄) 

(参考) 開発環境ではちゃんと動くのにプロダクション環境では動かない 文字コード編



* 文字コードでハマったら、以下のコードを、appengine-web.xmlに追加してみる。


 <property name="file.encoding" value="UTF-8"/>
 <property name="DEFAULT_ENCODING" value="UTF-8"/>



HTMLには、


 <head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 </head>



responseには、


resp.setCharacterEncoding("UTF-8");



requestには、


 req.setCharacterEncoding("UTF-8");



 を追加してみる。

0 件のコメント:

 
© 2006-2015 Virtual Technology
当サイトではGoogle Analyticsを使ってウェブサイトのトラフィック情報を収集しています。詳しくは、プライバシーポリシーを参照してください。