Google App Engine(以下はGAEと称する)でjexcelapiを利用して、Excelを作成してダウンロードする処理を実装しました。
GAEにはホワイトリストがありますの、このリスト以外のクラスがサポートされていません、例えばApache POIはExcel作成によく使われるんですが、GAE環境にはなかなか使えません。(多分Apache POIがJava低レベルAPIを使っているかもしれません)いろいろ調べると、jexcelapiが見つかりました、これを利用して問題なくExcelファイルが作成でき、ダウンロードすることもできるようになりました。このサンプルを作成しましたので、ご覧ください。
自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。
2010年6月21日月曜日
2010年5月12日水曜日
JDO-トランザクション使用例
明示的なトランザクションを使用していない場合、どちらのエンティティも個別のアトミックなアクションを使用して作成されます。その場合、 Employee エンティティの作成が成功し、ContactInfo エンティティの作成が失敗することも考えられます。どちらのエンティティも正常に作成されたか、どちらのエンティティも作成されていないことを保証するには、トランザクションを使用する必要があります。
JDO-関係-1 対 1 の所有関係
2 つの永続オブジェクト間に一方向の 1 対 1 の所有関係を設定するには、関連付けられるクラスのクラスをタイプとして持つフィールドを使用します。
次に、ContactInfo データ クラスと Employee データ クラスで、Employee から ContactInfo への 1 対 1 の関係を定義する方法を示します。
次に、ContactInfo データ クラスと Employee データ クラスで、Employee から ContactInfo への 1 対 1 の関係を定義する方法を示します。
2010年5月11日火曜日
Google App Engine トランザクション処理
「トランザクション」とは、完全に成功または失敗した一連のデータストア操作のことです。トランザクションが成功すると、意図した効果がすべてデー タストアに適用されます。トランザクションが失敗すると、意図した効果は適用されません。
データストアの書き込み操作はすべてアトミックです。エンティティの作成、更新、削除は「実行される」か「実行されない」かのどちらかです。操作が 失敗する原因として、同時にエンティティを変更しようとするユーザーが多すぎて競合頻度が高くなっていることが考えられます。また、アプリケーションが割 り当て制限に達したために操作が失敗する場合もあります。そのほか、データストアの内部エラーが原因の場合もあります。いずれの場合にも、操作の効果は適 用されず、Datastore API は例外を発行します。
データストアの書き込み操作はすべてアトミックです。エンティティの作成、更新、削除は「実行される」か「実行されない」かのどちらかです。操作が 失敗する原因として、同時にエンティティを変更しようとするユーザーが多すぎて競合頻度が高くなっていることが考えられます。また、アプリケーションが割 り当て制限に達したために操作が失敗する場合もあります。そのほか、データストアの内部エラーが原因の場合もあります。いずれの場合にも、操作の効果は適 用されず、Datastore API は例外を発行します。
JDO Extent
JDO Extent は、データストア内にある特定のクラスのすべてのオブジェクトを表します。
PersistenceManager の getExtent() メソッドから Extent を開始し、データ クラスへと渡します。Extent クラスは、結果へのアクセスに Iterable インターフェースを実装しています。結果アクセスの完了後は、closeAll() メソッドをコールします。
次に、データストア内のすべての Employee オブジェクトを繰り返し処理する例を示します。
PersistenceManager の getExtent() メソッドから Extent を開始し、データ クラスへと渡します。Extent クラスは、結果へのアクセスに Iterable インターフェースを実装しています。結果アクセスの完了後は、closeAll() メソッドをコールします。
次に、データストア内のすべての Employee オブジェクトを繰り返し処理する例を示します。
import java.util.Iterator;エクステントは結果をバッチで取得するため、クエリ結果に適用される 1,000 行という制限を超えて結果を取得できます。
import javax.jdo.Extent;
// ...
Extent extent = pm.getExtent(Employee.class, false);
for (Employee e : extent) {
// ...
}
extent.closeAll();
JDOクエリ(JDOQL)
JDO には一連の条件を満たすオブジェクトを取得するためのクエリ言語が含まれます。JDOQL と呼ばれるこの言語は、JDO データ クラスとフィールドを直接参照することができます。また、クエリ パラメータと結果の種類のチェック機能も備えています。JDOQL は SQL に似ていますが、App Engine データストアのようなオブジェクト指向のデータベースには SQL よりも適しています(App Engine データストアは、JDO インターフェースでの SQL クエリはサポートしていません)。
クエリ API は複数のコール スタイルをサポートしています。JDOQL 文字列の構文を使用すれば、文字列の中に完全なクエリを記述することができます。また、クエリ オブジェクトのメソッドをコールし、クエリの一部またはすべてを指定できます。
メソッド スタイルのコールを使用したクエリの簡単な例を紹介します。この例では、フィルタで使用される値に対してパラメータの置き換えを行い、フィルタを 1 つ、並び替え順序を 1 つ指定します。クエリ オブジェクトの execute() メソッドは、クエリにおいて代用される値と共に宣言順にコールされます。
クエリ API は複数のコール スタイルをサポートしています。JDOQL 文字列の構文を使用すれば、文字列の中に完全なクエリを記述することができます。また、クエリ オブジェクトのメソッドをコールし、クエリの一部またはすべてを指定できます。
メソッド スタイルのコールを使用したクエリの簡単な例を紹介します。この例では、フィルタで使用される値に対してパラメータの置き換えを行い、フィルタを 1 つ、並び替え順序を 1 つ指定します。クエリ オブジェクトの execute() メソッドは、クエリにおいて代用される値と共に宣言順にコールされます。
JDO-detachable
クラスを「デタッチ可能」と宣言すると、PersistenceManager を閉じてからオブジェクトを修正できます。そのためには、次のように @PersistenceCapable アノテーションに detachable 属性を追加できます:
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class Employee {
// ...
}
JDO-コレクションプロパティ
1 つのデータストア プロパティに、複数の値を保持することもできます。JDO では、これをコレクション型の単一フィールド(主な値型またはシリアライズ可能なクラスのコレクション)で表します。以下のコレクション型がサポートされます:
* java.util.ArrayList<...>
* java.util.HashSet<...>
* java.util.LinkedHashSet<...>
* java.util.LinkedList<...>
* java.util.List<...>
* java.util.Set<...>
* java.util.SortedSet<...>
* java.util.Stack<...>
* java.util.TreeSet<...>
* java.util.Vector<...>
JDO-シリアライズ可能なオブジェクト(Serializable)
フィールド値には、シリアライズ可能なクラスのインスタンスを格納できます。その場合は、インスタンスをシリアライズした値を Blob 型の単一プロパティ値として格納します。JDO で値をシリアライズするには、そのフィールドで @Persistent(serialized=true) を使用します。Blob 値はインデックス化されないため、クエリ フィルタや並び替え順序に使用することはできません。
ここでは、ファイルを表す単純なシリアライズ可能なクラスの例を示します。コンテンツ、ファイル名、および MIMI タイプが含まれています。これは JDO データ クラスではないため、永続性アノテーションは付加されていません。
ここでは、ファイルを表す単純なシリアライズ可能なクラスの例を示します。コンテンツ、ファイル名、および MIMI タイプが含まれています。これは JDO データ クラスではないため、永続性アノテーションは付加されていません。
JDO-埋め込みクラス
埋め込みクラスを使用すると、新しいデータストア エンティティを作成したり関係を形成したりしなくても、クラスを使ってフィールド値をモデル化できます。オブジェクト値のフィールドは、保持されているオブジェクトのデータストア エンティティに直接格納されます。
すべての @PersistenceCapable データ クラスは、他のデータ クラスへの埋め込みオブジェクトとして使用できます。クラスの @Persistent フィールドはオブジェクトに埋め込まれます。埋め込み対象のクラスに @EmbeddedOnly アノテーションを付加すると、埋め込みクラスとしてのみ使用できるようになります。埋め込みクラスが独立したエンティティとして格納されることはないため、主キー フィールドは必要ありません。
次に埋め込みクラスの例を示します。この例では、埋め込みクラスを、それを使用するクラスの内部クラスにしています。この方法はクラスを埋め込み可能にする上で便利ですが、必須というわけではありません。
すべての @PersistenceCapable データ クラスは、他のデータ クラスへの埋め込みオブジェクトとして使用できます。クラスの @Persistent フィールドはオブジェクトに埋め込まれます。埋め込み対象のクラスに @EmbeddedOnly アノテーションを付加すると、埋め込みクラスとしてのみ使用できるようになります。埋め込みクラスが独立したエンティティとして格納されることはないため、主キー フィールドは必要ありません。
次に埋め込みクラスの例を示します。この例では、埋め込みクラスを、それを使用するクラスの内部クラスにしています。この方法はクラスを埋め込み可能にする上で便利ですが、必須というわけではありません。
2010年4月22日木曜日
Google App Engine StringUtilで末尾にある空白の文字を削除する
Google App Engineで提供しているStringUtilクラスをを見かけました、このクラスにいろんな実用性高いメソッドが入っています、この記事で【trimEnd】メソッドを紹介します。
Javaで文字列処理関数はtrim()がありますが、末尾にある空白の文字を削除する関数は提供していません。けれど、Google App Engineライブラリになんと提供しています。
インポート文:
import com.google.appengine.repackaged.com.google.common.base.StringUtil;
使い方:
String strTempLast = StringUtil.trimEnd(content);
Javaで文字列処理関数はtrim()がありますが、末尾にある空白の文字を削除する関数は提供していません。けれど、Google App Engineライブラリになんと提供しています。
インポート文:
import com.google.appengine.repackaged.com.google.common.base.StringUtil;
使い方:
String strTempLast = StringUtil.trimEnd(content);
2010年4月19日月曜日
2010年4月7日水曜日
GAE web.xml設置例
Google App Engine Javaで開発するウェブアプリケーションのweb.xml設置例を紹介します。
web.xmlとサーブレットの連携してサービスを提供します。
web.xmlとサーブレットの連携してサービスを提供します。
GAE UrlFetchサービス
Google App EngineのUrlFetchサービスを紹介しようとします。このサービスを利用して、他のウェブサイトのサービスやWeb内容を取得することが可能です。
なお、このサービスの使い方も簡単です。
なお、このサービスの使い方も簡単です。
2010年4月6日火曜日
GAE Mail送信サンプル
Google App Engineでメールを送信するサンプルを紹介します。
GAEは無料で一日2000通のメールを送信する可能ですので、本当に便利な機能です。
SendmailServlet.java
GAEは無料で一日2000通のメールを送信する可能ですので、本当に便利な機能です。
SendmailServlet.java
GAE JCacheサンプル
Google App Engineはクラウドサービスであっても、プログラムの処理実行パフォーマンスは必ずしも早いとはいえません、特にデータストア(BigTable)へのアクセス処理はやや遅い感じです。この原因で、一部のよく使われてるデータをキャッシュしないといけないです、この記事でGAE JCacheサンプルを紹介します。
2010年4月5日月曜日
GAE Cronスケジューラ
GAEは指定時刻や繰り返しの間隔でジョブを実行する機能を説明します。
このサンプルではcron.xmlとcronServlet.java二つのファイルがあります。
まずは、cron.xmlファイルです。このファイルでジョブ実行ルールを定義します。
cron.xml
このサンプルではcron.xmlとcronServlet.java二つのファイルがあります。
まずは、cron.xmlファイルです。このファイルでジョブ実行ルールを定義します。
cron.xml
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/cron/cron1</url>
<description>Test mail send every 1 minutes</description>
<schedule>every 1 minutes</schedule>
</cron>
</cronentries>
<cronentries>
<cron>
<url>/cron/cron1</url>
<description>Test mail send every 1 minutes</description>
<schedule>every 1 minutes</schedule>
</cron>
</cronentries>
2010年4月2日金曜日
GAE JDOサンプル
この記事でGEAデータストーレージの利用サンプルを紹介します。
GAEでデータストアの API 標準としてサポートされているのは、JDO(Java Data Objects)と JPA(Java Persistence API)の 2 つです。これらのインターフェースは、複数の Java 永続性標準のオープン ソース実装である DataNucleus Access Platform で、App Engine データストア用のアダプタを使って提供されます。
このサンプルでは、JDO インターフェースを使用して、簡単なデータ処理を説明します。
GAEでデータストアの API 標準としてサポートされているのは、JDO(Java Data Objects)と JPA(Java Persistence API)の 2 つです。これらのインターフェースは、複数の Java 永続性標準のオープン ソース実装である DataNucleus Access Platform で、App Engine データストア用のアダプタを使って提供されます。
このサンプルでは、JDO インターフェースを使用して、簡単なデータ処理を説明します。
2010年4月1日木曜日
GAEログ出力方法
この記事からGoogle App Engineを略称して、GAEと言います。
このトピックでGAEログ出力方法を説明します。まずログ出力手順を纏めてリストしておきます。
①ログ出力レベルを設定します
②Loggerクラスを宣言します
③ログレベルによりログ出力をコーディングします
このトピックでGAEログ出力方法を説明します。まずログ出力手順を纏めてリストしておきます。
①ログ出力レベルを設定します
②Loggerクラスを宣言します
③ログレベルによりログ出力をコーディングします
2010年3月31日水曜日
Eclipse Google App Engine Plugin 1.3.2を応用しました
昨日GoogleからリリースしたGoogle App Engine Eclipse Plugin1.3.2をインストールしました、普通のEclipse Pluginのように更新するではなく、新しいインストールの必要です。というと、Helpメニューから【Check for Updates】のではなく、【Install New Software】からインストールするんです。
2010年3月30日火曜日
初めてのGoogle App Engineプログラム
Google App Engineを利用してウェブアプリケーションを作成する初めてのサンプルを紹介します。
このサンプルではGoogle App EngineのEclipse Pluginを利用してシンプルなサンプルを作って、Googleクラウドサーバーにアップロードする手順を説明します。
まずはEclipseツールバーの一番前の【g】ボタンを押してGoogle App Engineプロジェクトを作りましょう。
このサンプルではGoogle App EngineのEclipse Pluginを利用してシンプルなサンプルを作って、Googleクラウドサーバーにアップロードする手順を説明します。
まずはEclipseツールバーの一番前の【g】ボタンを押してGoogle App Engineプロジェクトを作りましょう。
2010年3月29日月曜日
Google App Engineデベロッパー ガイド
Google App Engineのデベロッパー ガイドURLを共有します。
http://code.google.com/intl/ja/appengine/docs/
最近Google App Engineを勉強し始めました、このガイドは初心に対してすごく分かりやすいです。
http://code.google.com/intl/ja/appengine/docs/
最近Google App Engineを勉強し始めました、このガイドは初心に対してすごく分かりやすいです。
登録:
コメント (Atom)

