Eclipse + App Engine で Scala を使ってみる。
以前、既存 Java プロジェクトで Scala を使えるようにする方法は確認したので、
Google Web Application プロジェクトを作って、
そこで Scala が使えるようにする方法で行く。
● 2013年5月12日日曜日 - | [Scala] AppEngine で Scala を使う |
● 2012年11月15日木曜日 - | [AppEngine] jdoconfig のパラメータ |
● 2012年11月13日火曜日 - | [AppEngine] データ更新時の Index の使用量 |
● 2012年9月5日水曜日 - | [AppEngine] ログ出力 |
● 2012年9月4日火曜日 - | [AppEngine] JDO の Cross-Group-Transaction |
● 2012年9月3日月曜日 - | [AppEngine] JDO のトランザクション |
● 2012年9月2日日曜日 - | [AppEngine] データストアの Quota と Index |
● 2012年9月1日土曜日 - | [AppEngine] Eventual ということ。 |
● 2012年8月26日日曜日 - | [AppEngine] JDO でデータストアを使う |
● 2012年8月25日土曜日 - | [AppEngine] JDO でデータストアを使う(準備編) |
● 2012年8月24日金曜日 - | [AppEngine] AppEngine で Servlet+JSP を使う。 |
● 2012年8月21日火曜日 - | [AppEngine] デプロイしてみる |
● 2012年8月19日日曜日 - | [AppEngine] Google App Engine を使ってみる。 |
2013年5月12日日曜日
2012年11月15日木曜日
[AppEngine] jdoconfig のパラメータ
AppEngine の Eclipse プラグインでプロジェクトを作成すると、JDO 用の設定ファイルである jdoconfig.xml が作成される。
その中に、
というパラメータがある。 JDO のドキュメント によると意味は以下の通り。
autoCreateDatastoreTxns は JDO で規定されているパラメータではなく App Engine 固有の設定なので、 App Engine のトランザクションの説明 に記載されている。
false にすると JDO 的にトランザクションを有効にしても データストアのトランザクションは起動しないらしい。
実際に試してみよう。
その中に、
<property name="javax.jdo.option.NontransactionalRead" value="true"/> <property name="javax.jdo.option.NontransactionalWrite" value="true"/> <property name="javax.jdo.option.RetainValues" value="false"/> <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
というパラメータがある。 JDO のドキュメント によると意味は以下の通り。
パラメータ | 意味 |
---|---|
NontransactionalRead | Whether to allow nontransactional reads |
NontransactionalWrite | Whether to allow nontransactional writes |
RetainValues | Whether to suppress the clearing of values from persistent instances on transaction completion |
autoCreateDatastoreTxns は JDO で規定されているパラメータではなく App Engine 固有の設定なので、 App Engine のトランザクションの説明 に記載されている。
false にすると JDO 的にトランザクションを有効にしても データストアのトランザクションは起動しないらしい。
実際に試してみよう。
2012年11月13日火曜日
[AppEngine] データ更新時の Index の使用量
この間、JDO でデータを挿入・削除した場合、それぞれ
「キー以外の属性数×2 + 1」回のインデックス書き込みが発生した。
念のため、JDO で属性を一つだけ更新した場合のインデックス書き込みの回数を見てみよう。
予想としては、1属性で2つのインデックスがあるから2回発生するはず。
まずデータひとつ作成
キー以外の属性は3つなので想定通り 7 Index Write Ops。
「キー以外の属性数×2 + 1」回のインデックス書き込みが発生した。
念のため、JDO で属性を一つだけ更新した場合のインデックス書き込みの回数を見てみよう。
予想としては、1属性で2つのインデックスがあるから2回発生するはず。
まずデータひとつ作成
MyData data = new MyData(); data.setName("one"); data.setName2("two"); data.setNo(10L); pm.makePersistent(data);
Resource | Daily Quota |
---|---|
Datastore Entity Put Ops | 0 → 1 |
Datastore Index Write Ops | 0 → 7 |
キー以外の属性は3つなので想定通り 7 Index Write Ops。
2012年9月5日水曜日
[AppEngine] ログ出力
Google App Engine ではファイル出力ができないので、
何か記録を残そうとしたらデータベースに書くかログに出力することになる。
App Engine ではデフォルトでは java.util.logging を使用する設定になっている。
管理ツールのLogsで見るとこんな感じに出力されている。
管理ツールのLogs画面で Timezone を選択できる。ログの時刻はここで選択した Timezone を使って表示される。
App Engine ではデフォルトでは java.util.logging を使用する設定になっている。
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { Logger logger = Logger.getLogger("SampleLogger"); logger.info("INFOログです。"); logger.warning("WARNINGログです。"); resp.setContentType("text/plain; charset=utf-8"); resp.getWriter().println("ログ出力テスト"); }
管理ツールのLogsで見るとこんな感じに出力されている。
管理ツールのLogs画面で Timezone を選択できる。ログの時刻はここで選択した Timezone を使って表示される。
2012年9月4日火曜日
[AppEngine] JDO の Cross-Group-Transaction
AppEngine のデータストアでは、デフォルトではトランザクションの中で複数のエンティティグループにまたがる変更を行うことはできない。
複数のエンティティグループにまたがるトランザクションを実行するには、クロス グループ トランザクションが必要になる。今回はこのクロス グループ トランザクションを試してみる。
複数のエンティティグループにまたがるトランザクションを実行するには、クロス グループ トランザクションが必要になる。今回はこのクロス グループ トランザクションを試してみる。
2012年9月3日月曜日
[AppEngine] JDO のトランザクション
JDOでのトランザクションの基本。
PersistenceManager pm = PMF.get().getPersistenceManager(); Transaction tx = null; try { tx = pm.currentTransaction(); tx.begin(); MyData data = new MyData(); data.setName("one"); pm.makePersistent(data); tx.commit(); } finally { if ( tx != null && tx.isActive() ) { tx.rollback(); } if ( pm !=null && ! pm.isClosed()) { pm.close(); }; }
2012年9月2日日曜日
[AppEngine] データストアの Quota と Index
前回、調子に乗ってデータストアのテストをしていたらあっという間に、無料分の Quota の制限に達してしまった。
AppEngine 管理コンソールで詳しく見てみる。
「Quota Details」 画面で見てみると、引っかかったのは「Datastore Write Operations」 の 「0.05 Million Ops / 24 hour」。
「Quota Details」 画面で見てみると、引っかかったのは「Datastore Write Operations」 の 「0.05 Million Ops / 24 hour」。
2012年9月1日土曜日
[AppEngine] Eventual ということ。
前回の記事で、データの追加、削除、更新、取得をやってみた。
一応動くのだが、たまに表示される結果にデータの変更内容が反映されていないことがある。
Google App Engine のデータストアの形式には以前は、「Master/Slave」形式と「High Replication」形式があったのだが、「Master/Slave」形式は廃止されて、現在はアプリケーションを作成する際には「High Replication」しか選択できないようになっている。
「High Replication」ではデータの取得が eventual である、すなわり取得したデータが最新ではない可能性があるとのこと。どうやらそのせいのようだ。
一応動くのだが、たまに表示される結果にデータの変更内容が反映されていないことがある。
Google App Engine のデータストアの形式には以前は、「Master/Slave」形式と「High Replication」形式があったのだが、「Master/Slave」形式は廃止されて、現在はアプリケーションを作成する際には「High Replication」しか選択できないようになっている。
「High Replication」ではデータの取得が eventual である、すなわり取得したデータが最新ではない可能性があるとのこと。どうやらそのせいのようだ。
2012年8月26日日曜日
[AppEngine] JDO でデータストアを使う
前回、PersistenceManagerFactory と データクラス が準備できたので、
作成・削除・更新操作・取得をやってみる。
各操作は、PersistenceManagerFactory から取得した PersistenceManagerに対して実行する。
各操作は、PersistenceManagerFactory から取得した PersistenceManagerに対して実行する。
- 取得
キー値で取得する際には、PersistenceManager#getObjectById が使える。
それ以外に検索条件などで取得する際には、Query オブジェクトを使用する。Query query = pm.newQuery(MyData.class); @SuppressWarnings("unchecked") List
result = (List )query.execute(); - 作成
データオブジェクトを作成してプロパティをセットした後、 PersistenceManager#makePersistent を実行する。MyData data = new MyData(); data.setName(req.getParameter("name")); pm.makePersistent(data);
2012年8月25日土曜日
[AppEngine] JDO でデータストアを使う(準備編)
アプリがデプロイして動くようになったので データストアを使ってみる。
App Engine のデータストアを使用するには、 JDO(Java Data Objects)、 JPA(Java Persistence API)、 および、App Engine 独自の Low Level API を使用する方法がある。
Google App Engine の スタートガイドでは JDO を使っている のでまずは JDO を使ってやってみる。
App Engine のデータストアを使用するには、 JDO(Java Data Objects)、 JPA(Java Persistence API)、 および、App Engine 独自の Low Level API を使用する方法がある。
Google App Engine の スタートガイドでは JDO を使っている のでまずは JDO を使ってやってみる。
2012年8月24日金曜日
[AppEngine] AppEngine で Servlet+JSP を使う。
App Engine のプロジェクトで Servlet + JSP のパターンで動くか試してみる。
前回、プロジェクトを作成したときにはこんなフォルダ構成だった。
[Project-Folder] ... src/ META-INF/ jdoconfig.xml persistence.xml [package] XXXServlet.java war favicon.ico idnex.html WEB-INF/ appengine-web.xml logging.properties web.xml classes/ ... lib/ ...
2012年8月21日火曜日
[AppEngine] デプロイしてみる
環境ができたので、まずはなんか作ってデプロイするところまでやってみよう。
作成するプロジェクトは、Google > Web Application Project。
とりあえずは Google Web Toolkit は使わない予定なので「Use Google Web Toolkit」は外しておく。
なんかできた。
作成するプロジェクトは、Google > Web Application Project。
とりあえずは Google Web Toolkit は使わない予定なので「Use Google Web Toolkit」は外しておく。
なんかできた。
[Project-Folder] .settings/ com.google.appengine.eclipse.core.prefs com.google.gdt.eclipse.core.prefs org.eclipse.jdt.core.prefs org.eclipse.wst.common.project.facet.core.xml src/ META-INF/ jdoconfig.xml persistence.xml [package] XXXServlet.java war favicon.ico idnex.html WEB-INF/ appengine-web.xml logging.properties web.xml classes/ ... lib/ ...
2012年8月19日日曜日
[AppEngine] Google App Engine を使ってみる。
Google App Engine を使ってみよう。
まずは準備から。
App Engineのホームページにアクセスする。
ここに SDK のダウンロードや、各種参考資料へのリンクがある。
この画面に「利用を開始する」というボタンがあるので押す。
まずは準備から。
サービスの利用開始
App Engineのホームページにアクセスする。
ここに SDK のダウンロードや、各種参考資料へのリンクがある。
この画面に「利用を開始する」というボタンがあるので押す。
登録:
投稿 (Atom)