Java

Fedora13のセットアップ

秋口にFedora13をいじっていたが、覚え書きを残す前にFedora14が出てしまった。14を入れる前に、13でやったセットアップを覚え書きとして残しておこう。用途は「開発機」兼「よろず実験機」なので、インストールしているものには一貫性がないので悪しからず…

fedora13にhadoopを入れてみた。

ずっと前にクラウドマガジンvol.1を買って、スタンドアローンでapache hadoopをインストールする記事を読んだ。最近、手元のノート2台をUbuntu10.04とfedora13にした。fc13の方にHadoopを入れてみたので覚書き。インストールは記事通りで問題なし。 javaは…

GAE/Jのデータストアに入れた画像データを表示する

なんというか、ブログに乗せるのもみっともないのだが、小1時間ほど悩んでしまったので、メモとして残しておく。先のログで、Struts1.3をつかって「GAE/Jのデータストアにあるバイナリーをダウンロード」してみた。 これでは「つまらない」し、「用途が限ら…

Struts1.3でGAE/Jのデータストアからファイルをダウンロードする

先のログでは、Google App Engine/Java(GAE/J)へファイルをアップロードし、データストアにBlob形式で保存をした。今回は、そこで保存したデータを取り出して、ダウンロード&復元してみる。以下のような画面を用意し、「ダウンロード」ボタンでファイルを…

GAE/Jのデータストアにファイルをアップロードする

以前のログ「GAE/JにStruts1.3のサンプルを乗せてみた」でファイルのUploadがうまくいかない、と書いた。 これは、GAE/Jのランタイム環境でFileOutputStreamがサポートされていないのが原因。GAE/Jがファイルシステムとして利用できないことはよく知られたこ…

Struts1.3+Velocity1.6をGAE/Jに乗せてデータ・ストアを使ってみた

先のログでは、Velocity-Tools1.4に付属しているサンプルが、Google App Engine/Java(GAE/J)上で動くことを見た。 そこで、先に「Struts1.3をGAE/Jに乗せてデータ・ストアを使ってみた」で作成したサンプルを改造して、Velocityを使ってみることにする。Stru…

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

個人的に、テンプレートエンジンが好きだ。 先日、SourceForgeでリリースしたMyznalaはPHPベースの開発基盤だが、これにはDwooを使わせてもらっている(Smartyの方が有名だが、ライセンスがLGPLなので利用しなかった)。Apache Volocityは、JavaEEのテンプレ…

Struts1.3+Springframework2.5でGAE/Jのデータ・ストアを使ってみた

前回のログでは、Struts1.3の簡単なサンプルを作って、Google Apps Engine/Java(GAE/J)上でデータ・ストアを使ってみた。 それを少し発展させて、同じ仕様で、Struts1.3とSpringframework2.5を連携させたサンプルをGAE/Jに乗せてみた。初期画面は以下。ここ…

Struts1.3をGAE/Jに乗せてデータ・ストアを使ってみた

前回のログでは、Apache Struts(1.3.10)に付属するサンプルをGoogle App Engine/Java(GAE/J)に乗せてみた。せっかく(制限事項つきだが)乗ることが分かったので、struts-blank.warをもとに、データストアを使う簡単なサンプルを作ってみることにした。サ…

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モデルから乖離していく。これは、同時にサーバーサイドの仕掛けも、大仕掛けのものから、コンポーネント化さ…

DWR: dwr20.dtdの読み込み速度について

友人のmezawa氏から、dwr20.dtdの読み込み速度についてご指摘をいただいた。このログでは、DWRのホームページからダウンロードできるdwr.warを元にサンプリングを行ってきたが、dwr.xmlの先頭に記述している では、読み込みに時間がかかるので、

DWR: 例外(Exception)のハンドリング

先のログ「DWR: Javaオブジェクトを画面の要素にマップする」で、「(DWRでマップする)Objectの型に合わない入力をすると例外(org.directwebremoting.extend.MarshallException)が発生する」と書いた。この場合、「Error」と書いたAlertボックスがポップ…

DWR: Javaオブジェクトを画面の要素にマップする。

DWRでは、サーバーにあるjavaオブジェクト(POJO)と画面要素を透過的にMapすることができる。dwr.warの「Editable Table」がこのサンプルにあたるが、サンプルには完全なコード(java)が付属していない。 コードを補完しようとしたところ、動かずに手こず…