ひな祭りでした。
もう3月です。3月中にやってしまわないといけないことが山積み…
ひな祭りでした。
もう3月です。3月中にやってしまわないといけないことが山積み…
SSS(G)のサーバがパワーアップしました。関係者の皆様、いろいろとありがとうございました。
まだいくつかサービスがダウンしたままですが、Movable Type は使えるようになりました。
最初にMovable Type の設定をしてもらったようですが、何かおかしくて文字化けが発生していたので再インストールをしてみました。調子が悪いようだったらまた連絡を下さい。
作業内容のメモを残しておきます。
続きを読む
Ref: FindBugs – A Bug Pattern Detector for Java
便利なEclipseプラグインらしい。とりあえず使ってみた。でもなぜか正常に動いてないような気がする。ソースを持ってきて覗いてみたらGeneric機能使っているようなので、Java2 1.4 ではコンパイルできない…。
仕方がないので、all releaseからFindBugsの 0.7.0 をダウンロードして使うようにしてみたところ、動作した。0.7.1はTigerでないと動かないのかもしれない。
Java News をみてちょっとびっくりした。(何にびっくりしたかは秘密)
まぁ、とりあえず 「 Borland Together Edition for JBuilder X Developer」が10万円というのは嬉しい。職場で手が出そうだ。
Tigerを使いこなす: Tigerのプレリリース版がお試しできますも一応見ておこう。
Servlet/JSPでロックファイルを作成するにはどうするんだろうと思ってちょっと調べてみた。
テキストファイルへの同時書き込みを防ぐという手もあるようだが、10分以上たったロックファイルを強制的に削除したり、delete()メソッドを使っているあたりがちょっとあやしい。ロックファイルプロトコルの実装にはJava2 SDK のドキュメントではFile.createNewFile()とFile.deleteOnExit()とを組み合わせるというような記述があるので、そうした方がいいだろう。しかし、File.deleteOnExit()はVMが終了するときにしかファイルを削除しないのでServlet/JSPでは使えない。
もうちょっと調べてみたところ、java.nio.channels.FileChannel.lock() を使うのが良さそうだ。しかしこれも「ファイルロックは Java 仮想マシン全体のために保持されます。これらは、同一仮想マシン内の複数スレッドによるファイルへのアクセスを制御するには適していません。」なんて書かれている。もっと言えば、「他の言語で書かれたプログラムが動作するプロセスのためにも保持される」のだろう。ちょっと強力すぎる感じだ。
結局のところ、マルチスレッド対応のSingletonを用意して、そいつにキーとしてファイル名を渡すとロック用オブジェクトを返すようなメソッドを持たせて、synchronizedで排他制御するのが良いのでは、という結論に達した。