アーカイブ

‘Google App Engine’ カテゴリーのアーカイブ

appengine 1.5.5 の Cross-Group Transactions は Entity Group が 5つまでしか扱えない

2011 年 11 月 9 日 tdtsh Comments off

先日 slim3 1.0.14 とグローバルトランザクションについて書きました。
その続編です。

slim3 の Datastore.beginGlobalTransaction() とか deprecated になってます。
やはりフツーのDatastore.beginTransaction() を使えと言う事ですね。

で、Cross-Group Transactions なんですけど、やはり今のところ 5 entity groups までしか対応していないようです。

確かに複数Entityでも、今までの様に「can’t operate on multiple entity groups in a single transaction.」とか怒られる事が無くなったんですが、いっぱいEntityをぶっこむ(Entity Group が5つ以上)と、「java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.」とか怒られてしまいます。

沢山のEntity Group を含むトランザクションを扱うシチュエーションでは引き続き slim3 の GlobalTransaction を使う事になりますね。

カテゴリー: Google App Engine, slim3 タグ:

Slim3 1.0.14 とCross-Group Transactions

2011 年 11 月 2 日 tdtsh Comments off

Slim3が1.0.14になってる訳ですが、手もとのeclipseを確認したら、slim3-1.0.12.jarじゃないですか。

Slim3 Eclipse Pluginで横着してたんで、気がつきませんでした。

ソフトウェアの更新で出現しないんですけど、勝手にjarを入替えちゃってもいいんですかね。

というかPluginで入れても、更新は手作業なのかな。 (後日ちゃんとslim3pluginのアップデートが配信されました (2011/11/09 追記))

やってみた。いけた。

Slim3 1.0.14から、appengine SDK 1.5.5のリリースを受けて、グローバルトランザクション周りが変わっているようです。

Datastore.beginGlobalTransaction() じゃなく、フツーのDatastore.beginTransaction() で、Cross-Group Transactionsに対応しているとか。

5 entity groupsまでなら、複数Entity Groupをぶっこんでも、問題なく更新とかできる様になっている筈。

今までは複数のEntity Groupをトランザクションに含めると「IllegalArgumentException:can’t operate on multiple entity groups in a single transaction.」とか怒られたんですが、今回からは 5 Entity Group 以上を含んだ場合出るのかな。

また今度ちゃんと試します。

試しました (2011/11/09 追記)

・・・おそらく GTXの実装には苦労された事と思うんですが、ひがさんの心中や如何に。

カテゴリー: Google App Engine, eclipse, slim3, 開発環境 タグ:

急にeclipse から appengine にデプロイできなくなりました

2011 年 10 月 28 日 tdtsh Comments off

なんの拍子か判らないけど、気がついたら eclipse から appengine へデプロイしようとすると、こんなダイアログが出て失敗する様になりました。

An internal error occurred during Deploying %APPNAME% to Google NullPointerException

理由は判りません。
心当たりがあるとすれば、appengine python sdk のランチャを弄ってた位です。

Windows XP 、eclipse は Helios、appengine java SDK は 1.5.5 です。

取り急ぎは macbook air の開発環境から問題なくdeploy出来るんでいいんですが、そこそこ困ります。

更に、ローカルで実行しようとすると、こんな風に怒られます。

java.lang.RuntimeException: Unable to locate the App Engine agent. Please use dev_appserver, KickStart,  or set the jvm flag: "-javaagent:/lib/agent/appengine-agent.jar"
	at com.google.appengine.tools.development.DevAppServerFactory.testAgentIsInstalled(DevAppServerFactory.java:102)
	at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:77)
	at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:38)
	at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:154)
	at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
	at com.google.appengine.tools.development.DevAppServerMain.(DevAppServerMain.java:113)
	at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
Caused by: java.lang.NoClassDefFoundError: com/google/appengine/tools/development/agent/AppEngineDevAgent
	at com.google.appengine.tools.development.DevAppServerFactory.testAgentIsInstalled(DevAppServerFactory.java:98)
	... 6 more
Caused by: java.lang.ClassNotFoundException: com.google.appengine.tools.development.agent.AppEngineDevAgent
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 7 more

どうやら、VMの引数をちゃんとしろと言っているようです。

プロジェクトを右クリックして、英語の場合は[Run As] – [Run Configurations] を起動、[(x) = Arguments]タブ (日本語化の場合は[実行] – [実行の構成...] で[(x)=引数]タブ)で指定できます。

ですが、元々の値が判りませんし入れるのメンドクサイです。

かんたんな対処法は、パッケージエクスプローラ上の「App Engine SDK [App Engine - 1.x.x]を右クリックし、ビルドパスから除去して、プロジェクトのプロパティから再度SDKを指定すれば自動で入りました。

カテゴリー: Google App Engine, eclipse タグ:

appengine (java) でEメールを送信するとき、ヘッダの送信日時をGMT+900にしたい

2011 年 10 月 25 日 tdtsh Comments off

appengine java で 電子メールを送信する際に、ヘッダのDateをJSTにするにはどうすれば・・・。
タイトルそのまんまなんですけど、今のappengineでは出来ないみたいなんです。

GMailとかいまどきのMUAでは問題ないんですが、Outlookとか根強い人気なんで・・・

appengine sdk java 1.5.4をつかっています。

当方慣れの問題でLow Level APIでなくjavaMailを使用しております。
受信したメールのヘッダが 1)の様になりますが、2)の様になってほしいです。

1) Date: Tue, 04 Oct 2011 06:29:38 +0000
2) Date: Tue, 04 Oct 2011 15:29:38 +0900

電子メールを送信(Mail API)するとき、ヘッダの送信日時をGMT+900にしたい – Google-App-Engine-Japan

 
 
 

一応issueもあげてみました よかったらスターつけてください。

 
 

カテゴリー: Google App Engine タグ:

index が error で appengine にデプロイできないので index を削除

2011 年 10 月 22 日 tdtsh Comments off

以前WindowsでGAEのインデックス削除しましがが、Macでもやってみました。

以前Windowsでやった時は (pythonのSDKをインストールすればlancherが入っています。bulkloaderとかも。)、インデックスの削除にかなり時間がかかった記憶がありますが、数分で終わりますね。

先人の知恵

一日一歩: GAE/Jにてインデックスエラーでデプロイが失敗する場合の対処など

GAE/J使いの為のインデックス削除ツール – y-kawazの日記

カテゴリー: Google App Engine, eclipse タグ: