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

JSF2.0の選択タグについて

JSF

JSF2.0では選択タグ利用時のCollectionの型決定について、少しメモ程度に触れたいと思います。超シンプルなManagedBeanをまずは以下のように作成します。 import java.io.Serializable; import java.util.Set; import javax.enterprise.context.SessionScope…

JSF2のリソースアクセス機能

JSF

まあ、いまさらですがJSF2ではリソース定義及びそれに対するアクセスの標準的な仕組みが存在します。ここで言うリソースはJavascriptやCSS等です。例えばsample-webという名前がコンテキストルートの場合その直下にresourcesというフォルダを作成し、javascr…

Apache DeltaSpikeについて

久しぶりにSeam関連の情報を検索しているとSeam Next Announcementというタイトルでとても興味深い記事を見かけた。SeamはJavaEE5のフルスタックWebフレームワークでその仕様の一部がJavaEE6でCDIとして標準仕様に取り込まれたのは有名な話。この時ベースに…

ブックマーク可能なWebページをJSFで作る

JSF

ブックマーク可能なWebページをJSF2.0で作るのは比較的簡単です。といってもどういうシステムを作るかにもよるので一概には言えませんが、例えばブックマーク可能なリンクを作り、HTTPのGETリクエストをサーバに送信し、その結果を返すようにするだけです。 …

バグとかいろいろ

データバインドライブラリとしてテストプロダクト的な位置付けでリリースしているmaru-dogですが、こいつにはいくつかバグがあります。というか、とりあえず一気に作ったのでスレッドセーフかどうか等の考慮が漏れているかと。特にコンバータ関係は、内部に…

ワークフローエンジン

ルールベースのワークフローエンジンがほしい。何となくほしい。JavaだとJBossのdroolsがあるけどあそこまで高機能でなくていい。droolsは本格的なアプリケーション開発時にワークフローを定義するにはいいけど、局所的な場面で簡単に使うにはちょっと大げさ…

JSFのリダイレクトの仕組みとFlashスコープについて

JSF

JSF2.0におけるリダイレクトの仕組みとFlashスコープについて簡単に。。。1.クライアントがサーバにリクエストを送信。 2.リクエストスコープのデータをBeanに配置。 3.サーバ側で任意の処理を実行。 4.ナビゲーションルールに従い次のページをクライアント…

m4hv-extensionsについて

m4hv-extensionsはHibernateValidator(BeanValidator)の追加バリデーションライブラリとして提供してますが、いくつか修正したいポイントがあります。特に次の2つのバリデータアノテーションは名前を変更したい!!@NotHaveInValidCharacter -> @NotHasInV…

JSFのライフサイクル

JSF

JSFで開発を行う上ではライフサイクルの理解が重要となってくると思います。JSFには6つのフェーズが存在します。処理順にメモ程度ですが簡単に示したいと思います。 Restore View Phase コンポーネントツリーの抽出もしくは生成を行います。リクエストの値が…

JSFとCDIの連携

JavaEE6でJSFベースのWebアプリケーションを開発する場合JSFの管理BeanをCDIの管理Beanにしたほうがいいと思います。CDIの管理Beanといっても特に何か特別なことをする必要はありません。CDIを利用するにはWEB-INFディレクトリ配下にbeans.xmlファイルを作成…

JSFのページレンダリングの仕組み

JSF

JSFのページレンダリングの仕組みを自分なりに噛み砕いてまとめたものがPCの中に眠っていたみたいなので、今回はそれについて少々解説したいと思います。日本ではまだStruts1が使われることが多いとネットとかでも見るのでどれだけ有効かはわかりませんが・…

NIO2と戯れる

今回は久しぶりにJava7ネタで行こうと思います。Java7でNIOが大幅に改善されNIO2として新たな機能が追加されているようです。調べてみると結構いろいろ追加があってまだ全部調べきれてないけど今回は基本的な部分を紹介します。説明をだらだら書いてもしょう…

Javaでmixinさせるライブラリ作るのやめた・・・。

前回の記事でJavaでMixinするライブラリを作ろうとしてたけどやめました。そもそもcglibを使えば簡単にできるし、少しコード書いてみるとMixinするインスタンスの生成をコンテナで制御するだけのラッパーみたいになってしまってあまり意味がないと思ったので…

Javaでmixin

rubyの好きな機能の中でMixinがある。結構多用することもあるんだけど、Javaでも同じことができればなって思うこともある。バイトコードを直接操作するようなライブラリを使えば実現できるんだけど、個人的にはもっと手軽に利用したい。というわけでJavaで手…

MySQLをインストール後にとりあえずやること

久しぶりにMySQLをインストールする機会があったんだけど、インストール後のいつもやっている作業をちょっとメモってみようと思います。というのもたまにしかやらないから覚えておくのも大変だし、記録を残しておけばそこ見ればいいかなってことで。まず、イ…

How to use maru-dog JavaBeansプロパティデータバインドライブラリ (9)

前回から少し経ちますが、今回こそはmaru-dogのDSLについて解説したいと思います。maru-dogのバージョンは0.5.16以降を前提とします。これまでの日記でmaru-dogの内部DSLについては何度か簡単に説明したと思います。簡単におさらいすると、JavaBeansのプロパ…

Hibernate Validator(Bean Validaton)ともう少し戯れてみる

前回簡単にHibernateValidator(Bean Validation)について説明しましたが、今回はもう少し突っ込んだ内容を解説しようと思います。HibernateValidatorのバリデータアノテーションのJavaDocを見ていると各アノテーションの中に@Listというインナーアノテーシ…

TransferQueueについて

Java7ではjava.util.concurrentパッケージに新たにTransferQueueが追加になりました。このキューを利用するとプロデューサがデータをTransferQueueに送信すると、コンシューマがそれを取り出すまでプロデューサは待たされることになるようです。簡単なプログ…

RubyでJavaで言うところの流れるようなインターフェースまがいクラスを実装してみる

Java界隈ではよく流れるようなインターフェースがどうとかいうけど、Rubyでも同じようなことができる。ということで、ずっとJavaのネタばかり書いてきたので今回はRubyネタで行きます。実装方法は簡単です。 class CalcClass def initialize(number = 0) @va…

maru-dogとmaru-common

maru-dogとmaru-commonは現在maruマルチプロジェクトとして開発していますが、マルチプロジェクトをやめてそれぞれ独自プロジェクトにするか、maru-commonをmaru-dogに統合するか検討中です。理由はいくつかあるのですが、バージョンが分かりづらいからです…

How to use maru-dog JavaBeansプロパティデータバインドライブラリ (8)

久しぶりにmaru-dogについて解説したいと思います。前回内部DSLについて概要を紹介し、今回は少し詳細に解説する予定でしたが少し寄り道をしようと思います。maru-dogで標準でサポートしているコンバータですが、version0.5.8以降でいつくか追加になったもの…

Bean Validation(HibernateValidator)とm4hv-extensionsについて

前回はBean Validationの基本的な使い方について記事を書きましたが、今回はBeanValidationとその追加バリデーションライブラリであるm4hv-extensionsについて解説します。 m4hv-extensionsはBeanValidationの実装であるHibernateValidatorで動作確認を取っ…

Hibernate Validatorについて

Hibernate Validator 4はJSR303 - Bean Validationの参照実装で、JavaBeansに対するバリデーションフレームワークです。かなり手軽に使えるので個人的に気に入ってます。Bean Validationのインターフェースを実装し、独自の追加バリデータを作成するのも比較…

maru-0.6.17リリース

maru-0.6.17をリリースしました。JavaBeansデータバインドライブラリmaru-dogのバインド定義をOverrideするための内部DSLで流れるようなインターフェースで定義することができるようにしました。前回の記事で説明したようなかんじでバインド定義のDSLを記述…

maru-dogの内部DSL

maru-0.6.16をリリースしたばかりですが、内部DSLを修正したバージョンを早めにリリースしようと考えています。理由は、maru-dogの内部DSLを流れるようなインターフェースで記述可能にするためです。これまでのバージョンではdeclareFor〜endで定義を囲って…

maru-0.6.16リリース

maru-0.6.16をリリースしました。JavaBeansデータバインドライブラリmaru-dogにバインド元のプリミティブ型のプロパティをString型に変換してバインドを行う以下の拡張型コンバータを追加しました。 @ByteToString(Byte型のプロパティをString型に変換) @S…

BeanValidatorとかm4hv-extensionsとかJava7とか・・・

これまでずっとmaru-dogの解説やJava7の解説なんかをメインでやってきたけど、そろそろmaru-dogについてはメイン機能の解説はなくなってきたので一通り解説し終わったらBeanValidator(HibernateValidator)とBeanValidatorの追加バリデーションを利用したm4…

次期maru-dogの追加機能

maru-dogの次期バージョンではコンバータをさらに追加しようと思っています。現行バージョンはString型を各プリミティブ型へ変換するコンバータを実装しましたが、次期バージョンではその逆でプリミティブ型からString型への変換を行えるようにしようかなと…

How to use maru-dog JavaBeansプロパティデータバインドライブラリ (7)

前回からかなり時間が空きましたが今回はバインド先とバインド元のJavaBeansに定義されたバインドアノテーションを上書きし、バインドの振舞いを変える方法を紹介します。maru-dogはアノテーションで付与されたバインド情報を上書きし、振舞いを変更するため…

maru-0.6.9リリース

maru-0.6.9をリリースしました。今回はJavaBeansデータバインドライブラリmaru-dogにバインド元のString型のプロパティを各数値型に変換してバインドを行う以下の拡張型コンバータを追加しました。@ToByte @ToShort @ToInteger @ToLong @ToFloat @ToDoubleこ…