java-mysql-namelocker が出ていた
そういえば java-mysql-namelocker が出ていました.Maven Central にもリリースされています.
http://search.maven.org/#artifactdetails%7Cnet.moznion%7Cmysql-namelocker%7C1.0.0%7Cjar
Perlには Mysql::NameLocker というモジュールが古くからあり,このJavaのパッケージはその移植版になります.
何をするパッケージかと言うと,MySQL の GET_LOCK()
を用いてコネクションと紐付いた名前付きロックを取得し,try-with-resources のスコープを抜けた時に自動的に RELEASE_LOCK()
を発行してロックを解除するというシンプルなパッケージとなっています.或るコネクションがロックを取得している間は,他のコネクションは同じ名前でそのロックを取得できない (AlreadyLockedException が返ってくる) ので,コネクションと名前に応じた排他処理をお手軽に実現することが可能となります.
AutoCloseable を implement すると try-with-resources 文を使ったリソースの自動リリースを簡単に実現できて最高ですね!
Have a nice lock!
さて一番難しかったのはJavaのコードでもなんでもなくて,pom.xml の記述と Maven Central へのアップロードでした……
が,これもtagomorisさんのブログ記事とtokuhiromさんのブログ記事を見ながら頑張ったら出来たので,まあなんとかなるな! という感じです.本当に助かりました.
maven central にリリースしてみた - blog.64p.org
はじめてのmaven central 公開 - たごもりすメモ
余談ですが,OS X環境でgpg鍵作る際は brew install gpg2
してから gpg2 --gen-key
すると簡単で良かったです.