Lock File

Servlet/JSPでロックファイルを作成するにはどうするんだろうと思ってちょっと調べてみた。

テキストファイルへの同時書き込みを防ぐという手もあるようだが、10分以上たったロックファイルを強制的に削除したり、delete()メソッドを使っているあたりがちょっとあやしい。ロックファイルプロトコルの実装にはJava2 SDK のドキュメントではFile.createNewFile()とFile.deleteOnExit()とを組み合わせるというような記述があるので、そうした方がいいだろう。しかし、File.deleteOnExit()はVMが終了するときにしかファイルを削除しないのでServlet/JSPでは使えない。

もうちょっと調べてみたところ、java.nio.channels.FileChannel.lock() を使うのが良さそうだ。しかしこれも「ファイルロックは Java 仮想マシン全体のために保持されます。これらは、同一仮想マシン内の複数スレッドによるファイルへのアクセスを制御するには適していません。」なんて書かれている。もっと言えば、「他の言語で書かれたプログラムが動作するプロセスのためにも保持される」のだろう。ちょっと強力すぎる感じだ。

結局のところ、マルチスレッド対応のSingletonを用意して、そいつにキーとしてファイル名を渡すとロック用オブジェクトを返すようなメソッドを持たせて、synchronizedで排他制御するのが良いのでは、という結論に達した。

カテゴリー: Java

Subversion

Ref: Subversion
Ref: Subversion 批判に対する反論

Apache + WebDAV + Subversion は試してみる価値がありそうだ。研究で分散開発環境を構築してみたが、結局CVS, WebDAV を一番良く利用して、Wiki, Weblogは思ったよりも活用されなかった。ユーザーの嗜好もあるだろうが、良く利用する機能については、新しいものを評価しておく価値はあるだろう。問題はEclipseから使えるかだが、subclipseなるものがあるので、大丈夫そうだ。

Life

交通事故には気をつけたい。
信号無視で見通しの悪い信号を横切る自転車や、交通量の多い道路で横断歩道を使わずに横切る人を、最近よく見かける。交通マナーも低下しているのだろう。しかし、どんな理由であれ交通事故というのは悲惨な結果になることが多いので、起こさないように気をつける、まきこまれないように気をつける、という意識が必要だと改めて感じた。

しばらく気力がでないかも。

athletic apparel

001009.jpg
Ja-JakartaでJTC2004でブースを出展するにあたって作ったもの。普段も着れるけど、まだ一度も着ていない。

Batik

Batik は何と1.5.1になっていた。OpenOfficeで作成したグラデーションつきの絵をSVGで出力したものをBatikで表示すると90度回転してしまってたのでBatikのせいかと思ったら、最新版でも直っていないようだった。さすがにおかしいと思って、AdobeのSVG Viewer でも確認してみた。結果は、同じだったのでOpenOfficeの出力がいけないらしい。なんてこった。

カテゴリー: Java