GlassFish v3 でJNI

GlassFishにJNIを使ったアプリケーションをデプロイする方法。

普通にWarにしてデプロイするとjava.lang.UnsatisfiedLinkErrorが発生する。
これはGlassFishのClassLoaderとアプリケーションのClassLoaderが違うため、JVMの仕様?で同じネイティブライブラリにアクセスできなくて発生するエラー。

じゃあどうするか。JNIを使用する部分だけをjarにして
[glassfihs_home]/lib
にぶち込む。このディレクトリはGlassFish起動時にパスに含まれるのでwarには含めなくてOK。
こうすることでネイティブライブラリにアクセスするのはGlassFishのClassLoaderだけになる。したがってjava.lang.UnsatisfiedLinkErrorは発生しないというわけ。

こんなのに結構はまった。時間がもったいない・・。