JFreeChartのLegendの位置

JFreeChartで凡例を表示は、Legendというクラスが関連している。
グラフ上で、凡例の位置をグラフの右に表示するには、下記のようにプログラムする。

chart.getLegend().setPosition(RectangleEdge.RIGHT);


※chartはJFreeChart.classのインスタンス


Powered by ScribeFire.

|

JRockitでGCの詳細情報を出力してみる

GCの詳細情報は、verbose:gcで出力できるが、今回は、参照オブジェクトの数や実際に解放している
メモリー量などを詳細に出力してみた。

JavaはBEAのJRockit R27.3.1を利用。
Tomcatの起動時にVMオプションとして下記を追加。

-Xmanagement -verbose:gc -Xverbose:referents -Xverbose:memory,gcreport,gcpause


Powered by ScribeFire.

|

Javaでパスからファイルを取得する

Javaでファイルをパスから取得したい場合は、ClassLoaderを利用すると簡単便利です。

以下サンプル

        URL url = ClassLoader.getSystemResource("Template.txt");
        File file = new File(url.toURI());

いつもどうするんだっけ?ってなるので備忘録。

#パスが分かっている場合は必要ないですが、jarの中にあるファイルとか取りやすい

Powered by ScribeFire.

|

Hibernate+PostgreSQL8.2ではまる

PostgreSQL8.2のWindows版をインストールして、Hibernateからアクセスしようとしたら
SET AUTOCOMMIT TO OFFは、サポートしてないよといってエラーになってしまった。。
jdbcドライバも8.2に同梱されている最新のドライバを利用しているし・・・

これが、深夜3時半の話。。。。

ネット上にもその手の情報は、あまりなく1つあったのが、JDBCドライバが古いのでは?というフォーラムでのやり取りの記事。
うーむ。。

あ!

Tomcatのcommon/libにまさか古いものがはいっているのでは、、と思い見てみると。。。
はい、ありました。。チーン。・゚・(ノД`)・゚・

皆さんもお気をつけください。。。


Powered by ScribeFire.

|

Papilioを使ってみようかな。

会社のSNSに出ていたので、後で試してみます。

Papilio-バグトラッキングシステム-

powered by performancing firefox

| | コメント (0)

JRockitでのJVM設定

JRockitでのJVM設定って、SUN VMと違うんですな。。

-Xは、あくまでも拡張プロパティだからいいのか。。。
(できれば統一して欲しいところではあるが。。)


WebLogic JRockit JVM の起動とコンフィグレーション

powered by performancing firefox

| | コメント (0)

JRockitでVMモニタリング

BEAのJVM JRockItには、モニタリングツールがついている。(とのことで)
軽く使い方を調査。

まずモニターの対象は、JavaのJMX仕様MBeanであり、本来はアプリ実装者がモニター用のMBeanをアプリ内に実装しそれをTomcatなどの管理コンソールに登録して使用するかたちとなる。
ただ、VM内にもリソース関連を調査するためのMBeanが用意されておりJRockitの場合は、ドキュメント内で紹介されている。

手順1:アプリケーション(今回はTomcat)起動時に  -Xmanagement オプションをつけて実行する
Tomcatの起動コンソールに下記が表示されればOK(ログにも出ます)ポートなどを変えたい場合は、ドキュメントに載ってますのでそちらを見ち。
[JRockit] Starting remote JMX connector on port 7091.
[JRockit] Remote JMX connector on port 7091 ready.

手順2:JRockit Management Consoleを立ち上げる
Windowsなので、Win環境での手順ダス。コマンドプロンプトから、
> java -jar /JROCKIT_HOME/console/ManagementConsole.jar
を実行

手順3: connectionsメニューよりNew Connectionを作成
これは、下記画像のように接続先のサーバー(IPでいいと思います)と適当な?ユーザー名(パスワードを設定する場合はパスワードも)
addボタンを押せばOK

Jrockitmonitro

 

Memoryとかサクサク見れて、おまけに実行中のHeapサイズの変更も可能(だけど縮小して大丈夫のかはなぞw)CPUの使用率や、GCの実行もできるようです。
便利ですねぇ。。

Jrockitmonitro2


powered by performancing firefox

| | コメント (0) | トラックバック (0)

S2Hibernateのトランザクションではまる

うむぅ。。久々にあほっぽくはまってしまた。。
S2Hibernateを使ってお遊びがてらアプリを作っているのですが、
データベースにinsertを実施してもトランザクションを開始してくれない
から一向にデータが入らない。
S2Hibernateのサンプルを見ると確かに”自動でやってくれます”って書いてある。。うそばっかりと思っていたら、あれってdiconファイルに書いてもインターフェースきってない場合は、pointcutで指定しないと駄目なんですね。。(うわーはずかしぃー)
pointcutでメソッド指定したら、ちゃんとできました。。

リンク: Seasar - DI Container with AOP -.

| | コメント (0) | トラックバック (0)

DateのcompareToとTimestampのcompareTo

java.util.Dateとjava.sql.TimestampのcompareToメソッドの話。
java.util.Dateは、Javaで日付を表現するクラスです。一報java.sql.Timestampは、パッケージ名からもわかるようにDataBaseでの時間を表現するクラスです。ただ、Timestampは、java.util.DateのサブクラスでありTimestampには、compareToメソッドがオーバーライド実装されています。ここで1つ落とし穴があります。
compareToメソッドには、2種類あり compareTo(Date date)とcompareTo(Timestampe time) が定義されています。

ここで、compareTo(Date date)メソッドに対しjava.util.Dateのインスタンスを渡すと、なんとClassCastExceptionが発生します。ここでは、Timestampのインスタンスを渡さないといけないんですね。。今回はここではまりました。そして、じゃあ、compareToの対象を逆にする。
例:timestampInstance.compareTo(dateInstance)
                         ↓
     dateInstance.compareTo(timestampInstance)
としたら、どうなるでしょう。。これはOKですね。

と、ここで重要なのは、じゃあ、なぜオーバーライドしてるの?ってことです。
ソースを見ると、Dateでは、ミリ秒までを比較対象としTimestampでは、ナノ単位までを比較対象としているようです。また、内部でsuper.compareToを実施していますのでミリ秒レベルの比較に関しては同一のメソッドを利用していることになります。

APIとして定義している以上Dateクラスを引数として扱う場合のロジックもClassCastではなく準備しておいて欲しいところです。。(じゃなきゃそんなメソッドなくしてほしいのぅ)

| | コメント (0) | トラックバック (0)

Javaのクラスローダーでパス内の画像を取得する

Classクラスには、getResourceAsStreamというメソッドがある。
このメソッドを使うと、クラスローダーがパスの通っている対象のリソースのストリームを
返してくれる。
これを使えば、パス内に画像ファイルなどを入れておいてアイコンなどに使用する際に、
アイコン画像をURIなどで取得するのではなくパスから取得でき非常に便利だったりする。

ちなみに、注意事項としては、"/"で始まるリソース名は、そのまま使い、それ以外は、.から
"/"に変換したあと、Classのパッケージで補完します。
よって、Aクラスと同じパッケージにあるリソースのストリームを取得する場合は、下記となります。

A.class.getResourceAsStream("sample.gif");

パッケージ指定する場合は、
A.class.getResourceAsStream("/sample.gif");

とする感じ。

| | コメント (0) | トラックバック (0)