2008-05-01から1ヶ月間の記事一覧

Spring+HibernateEntityManager(HibernateEntityManager単体編)

おいらはここ数年 Spring Framework と HibernateEntityManager 環境で開発をすることが多いのですが、動けばいいやー的な方向に流されてるような気がする今日この頃です。ということで、Spring+HibernateEntityManager 環境について、ステップ・バイ・ステ…

普通には lazy フェッチできないケース(LoadTimeWeaverで対応)

前回、以下のアノテーションにより、対1関連をフェッチできると書きました。 @OneToOne(fetch=FetchType.LAZY) しかし、単純にそうもいかないケースもあるとも書きました。これらのケースを、例を追いながら説明し、その後 LoadTimeWeaver を用いた解決方法…

キャッシュパフォーマンスチューニング(eagerフェッチ関連)

eager フェッチが絡んでくると、ちょっと状況が複雑になってきます。 Hibernateのデフォルトのフェッチ戦略 Hibernateのデフォルトのフェッチ戦略では、MenyToOne と OneToOne 関連は eager フェッチが適用されます。しかし、それではうれしくない状況もあり…

Hibernateキャッシュパフォーマンスチューニング

あんまりまとまってないけど、とりあえずメモっておく。 確実に裏の取れていないところは、後で修正予定。 基本的禁則事項 クエリキャッシュ対象のエンティティの2次キャッシュが設定されていない場合。 この設定は、Hibernate のマニュアルでも禁止事項と…

久々の Bug Parade

久しぶりに Bug Parade にお世話になりました。ちなみに、Pug Parade(バグパレード) とは、Sun 公式の Java 関連バグデータベースです。 アドレスその1 http://developer.java.sun.com/developer/bugParade/index.html アドレスその2 http://bugs.sun.co…

Lookup Method Injection による、ソースコードからDIコンテナへの依存の解消

DIコンテナのメリット Spring Framework を用いて、Serivce や Entity を分離しているソースを見ることが最近は多くなりました。DIコンテナには、各クラスが他のクラスの実装に依存しないですむというメリットのほかに、アプリケーションのソースコードから…

EclipseでMavenプロジェクトをSVN共有する際のメモ

SVNキーワードの設定 後になると面倒なので、事前に行っておく。 SVNキーワードの設定 svn:ignore 対象ファイル .classpat .project .settings doc target 備考 svn:ignore する際、Eclipseのフィルタの状態によっては Package Exproler から見えないので注…

仕様記述言語としてのjava

仕様記述言語としてのjava 以前にAPIコンプライアンステストにて、脳内の概念モデルを言語に変換するという話を書きました。その際、仕様記述という目的に java 言語を用いています。概念モデルの仕様化にあたり、主に java のインタフェースを用いる目的は…

JGroupsの情報を外部から監視する方法

JGroupsの情報を外部からJMX経由で監視する方法です。(JMX経由の監視方法はこちらを参照のこと)以下のサンプルでは、OSCache の設定と同一チャネルに接続して、情報を取得しています。 import java.io.InputStream; import java.lang.management.Managemen…

APIコンプライアンステスト

概念モデルと実装の分離 おいらがオブジェクト指向で設計する際は、概念モデルレベルと実装を分けるように意識的に注意しています。 概念モデルを言語に変換 概念モデルの出発点は脳内でイメージしたモデルですが、このままでは共有できません。そのため、何…

LruLinkedHashMap

LRU(Least Recently Used)アルゴリズムを持つ Map を作成する場合、LinkedHashMap を使うとラクチンです。 LRU アルゴリズムの実装方法 removeEldestEntry(java.util.Map.Entry) メソッドをオーバーライドするだけで、LRU アルゴリズムを持った Map になりま…

ドキュメントを読んでみる。(その3)

Configuration oscache.properties ファイルによる設定の説明。 cache.memory キャッシュ領域としてメモリを使用するかどうかの指定。 true/false (デフォルトは true) cache.capacity キャッシュが保持可能な最大要素数の指定。 整数。負の値は無制限として…

ドキュメントを読んでみる。(その2)

FAQ デフォルトでは、LFUアルゴリズムがないらしい。 まぁ、なくてもいいけど。たぶん。 デフォルトでは、invalid方式しか使えない。 コピー方式使いたきゃ、イベントハンドラを自分で書けだそうです。確かに、コピーはいろいろと難しい問題はありそうですが…

ドキュメントを読んでみる。

以下は、OSCache を使い始めた頃にメモったものです。なんとなく捨てちゃうのももったいないし、デスクトップに置いておいてもなんなので、こっちに置いてみました。まだろくにソースに目を通していない頃の戯言なので、突っ込みどころ満載だろうなぁ。TODO:…

OSCache#getElementCountInMemory が -1 を返す理由を考えてみた

com.opensymphony.oscache.hibernate.OSCache#getElementCountInMemory が -1 を返す理由と、自分が実装するとしたらどうするかを考えてみました。 第一印象 おいらが最初に OSCache を使った時には、getElementCountInMemory が -1 を返すなんてダメダメだ…

Hibernate専用キャッシュを自作してみる(その2)

前回は、限定された要件を満たす最低限のシンプルな実装を作成してみました。今回は、OSCache と EhCache とのベンチマークをしてみます。自作キャッシュは、とりあえず OfCache という名前にしておきます。 要件 前回の要件を適用します。 環境 ・おいらの…

Hibernate専用キャッシュを自作してみる

要件 最低限の要件を考えてみる。 Hibernateの Cache 機構を使用する。 Cache および CacheProvider インタフェースを実装する。 キャッシュ利用中に、キャッシュ対象テーブルの内容が変更されることは無い。 readonlyモードでのみ使用される。 キャッシュ内…

Eclipse 上で UTF-8 のソースから javadoc を生成する方法

UTF-8 のソースからの javadoc 生成でおこられる Eclipse から javadoc を起動する際、ソースファイルをシステムのデフォルトエンコーディングで読み込もうとします。おいらの環境ではシステムのデフォルトエンコーディングが MS932 なのですが、ワークスペ…

NVIDIA CUDA

GPU

NVIDIA CUDA って、業務系アプリでも使い道ないかなぁ。機会があったら模索してみよう。

com.sun.net.httpserver.HttpServer を使ってみた

なんとなく眠れなかったので、サンプルつくってみたよ。 概要 メイン文の中で、HTTPサーバを立ち上げてます。 HttpHandler というインタフェースは handle というメソッドだけ持っていて、HTTPリクエストを受け取ってから返すまでの処理を記述します。引数は…

AtomicLong と ReentrantReadWriteLock の速度比較

int などへのアクセスとは異なり、long へのアクセスはアトミックな処理ではないため、マルチスレッド環境では排他処理が必要になります。普通に処理排他処理をするのであれば ReentrantReadWriteLock を使いそうなものですが、純粋に long のみをアトミック…

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

Hibernateは、キャッシュ周りのインタフェースを定義し、実装を交換可能にしています。ということで、CacheProvider インタフェースと Cache インタフェースを見てみました。 インタフェース org.hibernate.cache.CacheProvider Cache buildCache(String reg…

OSCacheを使ってみる

ホームページ http://www.opensymphony.com/oscache/ ドキュメント http://www.opensymphony.com/oscache/wiki/Documentation.html API http://www.opensymphony.com/oscache/api/index.html maven 最新版は 2.4.1 ですが、まだ central に上がってません。…

jgroupsの動作実験用ツール

JGroups の動作を、プロトコルの設定を変えてながらいろいろ試していたのですが、めんどくさくなってきたので GUI ツールを作ってみました。 機能 とりあえず、以下の機能を実装しました。 プロトコル文字列を指定しての JChannel の初期化 接続 接続解除 ロ…

Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる(その4)

MulticastKeepaliveHeartbeatReceiver$MulticastReceiverThread ハートビートを受け取るのは、CacheManager の初期化時に別スレッドとして作成・実行された MulticastReceiverThread です。このスレッドは、dispose()メソッドが呼び出されるまで、内部のwhil…

SSHトンネリング経由で JConsole

JMX

JConsole を SSH トンネリング経由で行う方法です。 ポートへの到達確認。 まず、サーバ側のポートに到達できるか確認しましょう。SSHでトンネリングしてから、telnetでポートを叩いてみましょう。この時点でつながらない場合は、SSHの設定ミスや、サーバ側…

Sun の binary license

Maven でビルド時に、Sun 関連アーティファクトについて、以下のようなエラーが出ることがあります。 [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] -------------------------------------…

EclEmmaプラグイン

Eclipse でコードカバレッジ用プラグインを入れようとして、Coverlipse をインストールしてみたところ、TestNGをサポートしていないことに気が付いた。さらに、公式HPでのVoteを見る限り、TestNGサポートは他の機能よりも後回しになりそうでした。ということ…

log4j.propertie

maven で構成管理しているとこの手のファイルが手元にないことが多いので、とりあえずメモ。 hibernate-3.2.6.ga 版 ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.o…

SVNキーワードを扱う

SVN

ソース中に $Id$とか入力すると、Subversion 側で勝手に $Id: OfCache.java 23 2008-05-06 13:24:45Z beyondseeker $のように変換をかけてほしい場合があります。CVSではたぶんデフォルトでキーワード変換をしてくれたと思うのですが、SVNでは明示的な設定が…