java

Spring+HibernateEntityManager(archetype編)

前回のおさらい 前回は、component-scan を用いつつ、ドメインモデル実装中の SpringFramework に依存したアノテーションを排除しました。 今回のテーマ 今回は、Spring+HibernateEntityManager 環境のサンプルプロジェクトの生成を、maven の maven-archet…

アノテーションによるアサーション(その14 例外の変更)

概要 アサーション失敗時の例外を、AssertionError から下記のように変更しました。 引数のアサーション失敗 java.lang.IllegalArgumentException 戻り値のアサーション失敗 java.lang.IllegalStateException リリース 0.0.19 意図 Error ではなく RuntimeEx…

アノテーションによるアサーション(その13 @Wovenの移動)

概要 @Woven アノテーションを移動しました。 移動前 jp.objectfanatics.assertion.weaver.Woven 移動後 jp.objectfanatics.assertion.constraints.Woven リリース 0.0.18 意図 @Woven アノテーションは、ウィービング完了後に Weaver によって自動的に付与…

インタフェースメソッドの引数名をクラスファイルから取得する方法ってないのかな?

JVM仕様の以下の情報から、intarface 以外のメソッドの引数名はデバッグ情報から取得できることがわかります。 4.6 Methods の attributes[] の説明から、オプションとして Code (§4.7.3) attribute を取得できることがわかる。 4.7.3 The Code Attribute の…

アノテーションによるアサーション(その12 オーバーライド時の整合性編)

概要 バージョン 0.0.13 にて、メソッドのオーバーライドに制限を追加しました。この変更により、メソッドをオーバーライドする際に、オーバーライドする側がされる側と同様の制約アノテーションを持たない場合にはエラーになるようになりました。これはリス…

アノテーションによるアサーション(その11 @Max, @Min 編)

概要 バージョン 0.0.12 にて @Max および @Min アノテーションに以下の型のサポートを追加しました。 java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicLong - アノテーションによるアサーション(その1) アノテーションに…

アノテーションによるアサーション(その10 @Max, @Min 編)

概要 バージョン 0.0.10 にて、@Max および @Min アノテーションについて以下の変更を行いました。 サポート対象の型の追加 アノテーションに与える型の変更(不動小数点数サポートのため) サポート対象として追加された型 byte short float double Byte Sh…

アノテーションによるアサーション(その9 インラインか、メソッド呼び出しか、それが問題だ編)

2009.05.02 現在のバージョン(ver0.0.8) までは、アサーション用のバイトコードをインライン展開する形でバイトコードをウィービングしていました。理由は、そのほうが高速に動作すると考えたからです。しかし、アサーション用のコード全体が毎回ウィービン…

アノテーションによるアサーション(その8 java5 編)

概要 バージョン 0.0.7 までは java6 以上のみのサポートでしたが、バージョン 0.0.8 にて java5 に対応しました。 - アノテーションによるアサーション(その1) アノテーションによるアサーション(その2 mavenプラグイン編) アノテーションによるアサ…

アノテーションによるアサーション(その7 @NotEmpty 編)

概要 バージョン 0.0.7 にて、アサーション用アノテーションに @NotEmpty を追加しました。 @NotEmptyアノテーション 対象がnullでない、かつ、空でないことを保証するためのアノテーションです。現在は、CharSequence(String や StringBuilder等), Collecti…

アノテーションによるアサーション(その6 @Max, @Min 編)

概要 バージョン 0.0.6 にて、アサーション用アノテーションに @Max と @Min を追加しました。 @Maxアノテーション 最大値を指定するアノテーションです。現在は、int, long, Integer, Long 型をサポートしています。 @Minアノテーション 最小値を指定するア…

アノテーションによるアサーション(その5 訂正編)

以前、アノテーションによるアサーション(その2 mavenプラグイン編)に載せたサンプルの pom.xml に、pluginRepositories 要素が抜けていたためにうまく動かないという問題があったので、ページ上の pom.xml と サンプル を修正。 - アノテーションによる…

アノテーションによるアサーション(その4 eclpse 編)

前回 概要 eclise 上で javaagent を使用してバイトコードにアサーション用コードを織り込みます。 必要なファイルの用意 前回の「java agent 用ファイルの配置」と同様の準備をします。 各実行毎に設定を行う場合 実行設定用のダイアログを表示。 例:main…

アノテーションによるアサーション(その3 java agent 編)

前回 概要 java agent を使用してバイトコードにアサーション用コードを織り込みます。 必要なファイルの用意 bytecode instrumentation に必要なファイル assertion-agent-all-0.0.8.jar @NotNull アノテーションや weaving を行うクラスが含まれる jar フ…

アノテーションによるアサーション(その2 mavenプラグイン編)

前回 概要 maven のプラグインを使用してバイトコードにアサーション用コードを織り込みます。 フェーズ maven のデフォルトライフサイクルでは、ソースコードは以下の2つのフェーズでコンパイルされます。 compile main 系のコードがコンパイルされる。 te…

アノテーションによるアサーション(その1)

概要 アノテーションでアサーションを行うライブラリを作成してみました。(最新バージョンはこちらから確認してください)。 機能 @NotNull アノテーションによる引数と戻り値の null チェック。 @Min アノテーションによる最小値の保証。(バージョン 0.0.5…

Sonatype Nexus Maven Repository Manager

http://repository.sonatype.org/index.html maven2 のアーティファクトを検索するサイト。 結構軽いです。 ajax でソート機能を実装していたりして、操作性もよさそう。

Announcing TestNG 5.9

http://www.beust.com/weblog/archives/000511.htmlまだ maven の central には上がってないようです。上がったとしても、しばらくは maven や IDE との連携がうまくできるかの見極めが必要かもですね。

pseudo-transaction vs JTA

pseudo-transaction 肯定派とJTA屋のバトルですね〜。 Java Pseudo Transactions With Non-Transactional Resources Stay away from pseudo-transactions!おいら的には、non-xa なリソースに last-resource commit optimization を適用するということなら多…

JBoss Cache 3.0.0 goes GA

http://jbosscache.blogspot.com/2008/11/jboss-cache-300-goes-ga.html

オレオレURLプロトコル

任意の情報を独自プロトコルの URL で指定したいなぁと思い立った今日この頃。たとえば、hogeプロトコル。 hoge://example.com/foo/barとか。 でも、URL って基本的に http プロトコルくらいしか使わんですよねー (´・ω・`)たとえば http://www.yahoo.co.jp …

Hibernateのキャッシュについて考えてみる(その6)

前回は ReadOnlyCache について掘り下げてみました。今回は ReadWriteCache について掘り下げてみたいと思います。 マニュアル曰く If the application needs to update data, a read-write cache might be appropriate. This cache strategy should never b…

Hibernateのキャッシュについて考えてみる(その5)

前回は Cache Concurrency Strategy を全体的に扱いました。今回からは各 Cache Concurrency Strategy のそれぞれを個別にフォーカスしていこう思います。今回は、ReadOnlyCache について掘り下げてみようと思います。 マニュアル曰く If your application n…

Hibernateのキャッシュについて考えてみる(その4)

前回はキャッシュ並列性戦略の概要を確認してみました。今回は CacheConcurrencyStrategy インタフェースにフォーカスしてみようと思います。 インタフェース説明 Implementors manage transactional access to cached data. Transactions pass in a timesta…

Hibernateのキャッシュについて考えてみる(その3)

前回は、キャッシュ関連の分類と、キャッシュプロバイダ実装側の対応について考えてみました。分類にもいろいろあり、実装にもいろいろあって、一気にすべて理解するのは難しそうです。ということで、今回は Cache Concurrency Strategy の概要を確認してみ…

Hibernateのキャッシュについて考えてみる(その2)

前回は、Hiberanteの2次キャッシュを、単純に技術的に適用して動かすだけなら簡単だけど、適切に設計して実案件に取り込むのはハードルが高そうだねぇという話でした。今回は、キャッシュ関連の分類と、キャッシュプロバイダ実装側の対応について考えてみよ…

Hibernateのキャッシュについて考えてみる

Hibernate では2次キャッシュ(query cache と collection cache 含む)を提供していますが、キャッシュプロバイダ実装の選定とか、実案件への適用ポリシー等についてはユーザーにお任せですよね。自由度が高いというメリットはあるけど、自由を持て余してしま…

JBoss Cache 3.0.0 Alpha 出ましたね

http://jbosscache.blogspot.com/2008/07/mvcc-has-landed.html

Atomikos TransactionsEssentials で JTA (XA with MySQL編その4)

前回(Atomikos TransactionsEssentials で JTA (XA with MySQL編その3)) では、 MySQL では XA START xid JOIN は未サポートという事実が判明しました。 今回は、「なんかワークアラウンドないかな〜」的なコンセプトでぬるく攻めてみようと思います。 At…

Atomikos TransactionsEssentials で JTA (XA with MySQL編その3)

XA START xid JOIN は未サポート 前回(Atomikos TransactionsEssentials で JTA (XA with MySQL編その2))は XA START xid JOIN にて以下のようなエラーが発生しました。 mysql> XA START 0x636f6d2e61746f6d696b6f732e737072696e672e6a6462632e746d303030…