2009-01-01から1年間の記事一覧

GAE/JにStruts1.3のサンプルを乗せてみた

Springframeworkにも、(古くから)SpringMVCというモジュールがあるが、いまだにApache Strutsを使うことが多い。10年くらいJavaEEのアプリをやっている方なら、Struts1.0の頃の衝撃を覚えているに違いない(昔話が多いような。。。)。 ActionForm、Action…

DWR2+SpringframeworkでGEA/Jのデータストアを使う(その2)

前回のログでは、Google App Engine/Java(GAE/J)上で、DWR2からデータストアを利用してみた。この際、最後の「Delete ALLファンクション(1トランザクションで全てのPersonエンティティーを削除する)」で失敗してしまった。 これは、全てのPersonエンテ…

DWR2+SpringframeworkでGEA/Jのデータストアを使う(その1)

これまでのログでは、サーブレットからGAE/Jのデータストアを使ってみたが、DWR2+Springframeworkから使ってみる。サンプルは、以前のログ「Google Apps Engine(Java)のDWRアプリでテキストファイルを読み込んでみる」で使ったものを発展させる。その際に…

Google App EngineにDWR2+SpringframeworkDI&AOPを乗せてみた

前回のログでは、Google App Engine(GAE)にSpringframeworkのDI(Dependency Injection)を乗せて、無事に動くことを見た。今回は、Springframeworkの柱のもう一つである、AOP(Aspect Oriented Programing)を乗せてみる。AOPでWeavingするので、前回のサ…

GAE/JにDWR2+Springframework2.5 DIを乗せてみた

DI(Dependency Injection)が注目されたのが、いつ頃だったか忘れてしまったが、廃刊になってしまった「Javapress」でSeaser2とSpringframework(以下、Spring)のサンプル付きの記事を読んだとき、「これはすごい!!」と思った。場所まで覚えている。渋谷の…

Google App Engine/JavaのData Storeの「良い」ところ

数回のログにわたって、GAE/Jのデータストアを触ってみた。 雑誌の記事や、いくつかのHPを参考にさせていただいたが、まだ情報量が少ないのだなぁ、と思う。自分より先に利用をしてみた友人らと話していると、「GAE/Jはデータストアが特殊だからな。。。」と…

Google Apps Engine/JavaのData Storeで非所有関係を作ってみる(1:1)

GAE/Jのデータストアのマニュアルによれば、非所有関係はサポートしていないので、(プロパティーに)外部キーのようにキーを保管して、アプリケーションでハンドルせよ、と書いてある(これ)。それはそれでいいので、サンプルを作ってみた。前々回のログで…

Google App Engine/JavaのData Storeで所有関係を作ってみる(1:N)

前回のログに引き継き、今度はGAE/Jで1:Nの所有関係を作ってみた。 1:Nの所有関係も、基本的には1:1の時と同じ。GAEのマニュアルを読む限り、所有側のエンティティーにコレクション型のプロパティーを作成すればよい(サポートされるコレクションは、これ)…

Google Apps Engine/JavaのData Storeで所有関係を作ってみる(1:1)

Google Apps Engine/Java(GAE/J)のData Storeで1:1の所有関係を作ってみる。先のログに書いたように、所有関係も(主キー上で表現される)「ルートエンティティーからのパス」概念に帰着される。公式HP(こことかここ)をみると、所有側インスタンスの…

Google App Engine/JavaのData Storeを使ってみる

先のログでは、先走ってGoogle App Engine/Java(GAE/J)のデータストアにおけるカスケード・デリート(Cascade Delete。もしくは、リカーシブ・デリート。Recursive Delete)の問題を書いてしまったのだが、とりあえず、話を整理するために、順をおって、GA…

GAE/Jでカスケードデリートができない!! (Please help!! Cascade delete doesn't work on GAE Data Store.)

Google Apps Engine(GAE)でよく言われるのが、「データストアが…」ということ。公式HPによれば、JDO2.3、JPA1.0をサポートと言われているが、確かに制限事項が多くて、「なにが使えるのか」分からない。 Joinが使えない。 非所有関係がサポートされていな…

Google App Engine/Java上で、DWR2を使ったSessionの管理をするには

先のログで「Google App Engine(GAE)上に配置したDWR2では、scope=sessionの設定がうまくいかない」と書いた。GAEが準じているとするServetAPI2.5の参照実装であるTomcat6.0では、dwr.xmlにscope=sessionで定義したJavaBean(POJO)はセッションのスコープ…

DWR2のscope=sessionは不変オブジェクト??

前回のログで取り上げたサンプルなのだが、実は、Google Apps Engine上ではうまく動かない。 People.javaクラスをsessionスコープに定義しているのだが、レコードを削除して、画面をリフレッシュすると、初期状態に戻ってしまう。これを、そのまま開発環境で…

Google App Engine(Java)のDWRアプリでテキストファイルを読み込んでみる

先日のログ「Google App EngineにDWR2を乗せてみた」で、Google Apps Engine(GAE)にDWR2を乗せて簡単なサンプルを動かしてみた。GAEに関する記事などを読むと、GAEではファイルIOに制限があるとのこと。「(GAEのプラットフォームを)ファイルシステムと見な…

Google Apps Engine/Javaのセッション管理

Google Apps Engine(GAE)では、Java6.0の実行環境とServlet API 2.5に準ずるサーバー環境が提供されている。Servlet APIバージョンはスタブとして作成されるweb.xmlから見て取れる。仕様の中で気になることの1つが「セッション管理」である。Webアプリケ…

Google App Engine/Javaでcommons-logging+Log4jでロギングする。

Google App Engineのスタブ(appengine-web.xml)に <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties> とあるように、デフォルトの設定ではjava.util.loggingを使う設定になっている。これと一緒に、src下にlog4j.propertiesの雛形が用意されている。先のログでDWR2を…

Google Apps EngineにDWR2を乗せてみた

数回のログで、エンタープライズ・アーキテクチャの主流が旧来のMVC2モデルから、コントローラーがクライアントサイドに近づいた形態に移行している、と繰り返し論じた。また、コントローラーがクライアントサイドに近づいたアーキテクチャでは、自ずとサー…

Google App Engine/Javaを触ってみた

先日のログで書いたように、RIA型のアプリ、特にMushupアプリケーションやコンポジット・アプリケーションは、アーキテクチャ・モデルとしてのMVC2モデルから乖離していく。これは、同時にサーバーサイドの仕掛けも、大仕掛けのものから、コンポーネント化さ…

Myznala(みずなら)

以前、「これまで書いてきたログをまとめている」と書いた。ようやく、ある程度の格好になったので、SourceForge.jpでリリースにこぎつけた。このログにしばしば登場するmezawa氏とは、昨年より「EzoGP(えぞ・じー・ぴー)」というOSSプロジェクトを立ち上…

RIA型アプリとMVC2モデルの関係性

いろいろバタバタしてしまい、ブログの更新が滞っているのはうまくない。 mezawa氏と「RIA型アプリとMVC2モデルの関係性」についてメイルのやり取りをした。 これは以前から議論になっている話題。RIA型のアプリを頑張って作るという行為は、「頑張って画面…

Javascriptのオブジェクトの基本:プロトタイプチェーン

正直に言うと、現在のJavascript(ECMAScript)は、関数系言語だが、オブジェクト指向言語だかよく分からない。クロージャーのような機構は関数系言語に特徴的だと思うし、基本はそうなのだと思う。紛らわしいのは、javascriptの文脈に「オブジェクト」とい…

Javascriptの基本:イベントプロパゲーション(イベントバブリング)

イベントプロパゲーション(event propagation)という性質がある。英語を直訳すると「イベントの伝播」。バブリング(bubbling)ということもある。 これを、一言で言うと、 DOM階層の下位で発生したイベントが、上位に伝播していく こととなる。 論より証…

Javascriptのオブジェクトの基本:イベントハンドラとthis

先のログ『Javascriptのオブジェクトの基本:インスタンス化とthis』では、this句について、 インスタンス化されたオブジェクトをさす と書いた。とはいえ、Javascriptで頻繁に登場するthis句が「いったい何を指しているの?」ということで悩むことも多い。 …

Javascriptのオブジェクトの基本:インスタンス化とthis

先のログで、「コンストラクタのthisは、生成したインスタンスをさす」と書いた。これはJavaも同じだが、Javascriptでは「thisが何をさすのか」と迷う場面がしばしばある。このログでは、一番単純な例で、「thisのさす物」を覗いてみる。ソースは以下。 関数…

Javascriptのオブジェクトの基本:インスタンスとコンストラクタ、代入式

Javaには「インスタンス」、「コンストラクタ」という言葉がある。 自分はJavaEE屋さん歴が長いので、Javascriptを書いていても、new演算子が出てくると『インスタンスを生成する』と言いたくなる。だが、Javascriptでは『クラス』という言葉が使われないの…

Javascriptの基本:クロージャー(closure)とその読み方

よく、下のような形式の関数を『クロージャー(closure)』と呼ぶ。 // クロージャー var test1 = function(){ --- (1) var _i = 1; return function(){ alert(_i); _i++; }; }; 形式的には、先のログ『Javascriptの基本:いろいろな関数』で照会した、「関…

Javascriptの基本:スコープチェーン

スコープチェーン(scope chain)という言葉がある。 ここでいうスコープとは、「有効範囲」と言ったらいいかもしれない。よく「変数のスコープ」とか、「xxxのスコープ」とかいう言い方をするが、これらは、それぞれ「変数の有効範囲」、「xxxの有効範囲」…

Javascriptの基本:いろいろな関数

先のログ『Javascriptの基本:代入式』では、 var test = function(){ // --(2) var _arr = ["pretty","print"]; return _arr; }; var v1 = test; // --- (1) 参照の代入 var v2 = test(); // --- (3) 参照する関数の実行 の例を用いて、以下の結果を得た(…

Javascriptの基本:代入式

自分の足元を見直すつもりで、Javascriptに関して、いくつかの実験をしてみようと思う。まずは、代入式について考えてみたい。まず、代入式は、 メモリー空間にアロケートされた右辺の参照アドレスを、左辺でラベル付けする … (a) と定義するのが一般的と思…

Javascriptのオブジェクトの基本:オブジェクトの動的な変更

前回のログ『prettyPrint.jsを試してみた』では、 var test = { _arr : ["pretty","print"], _rear : [["pretty","print"]], _reobj : { "a":"pretty", "b":{"b1" : "print"}}, _func : function(_str){ alert(_str); return; } }; という簡単なオブジェクト…