ネイティブ コードを使用する Web アプリケーションは、Glassfish 2.x で正常に動作します。
3.1.1 では、次のエラーで失敗します。
[#|2012-04-18T14:43:08.330+0000|SEVERE|glassfish3.1.2|com.sun.jersey.spi.container.ContainerResponse|_ThreadID=21;_ThreadName=Thread-2;|The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.UnsatisfiedLinkError: com.basistech.rnt.jni.initializeEnvironmentSpecificRootDirectory(Ljava/lang/String;)Z
at com.basistech.rnt.jni.initializeEnvironmentSpecificRootDirectory(Native Method)
これは、ライブラリ全体ではなく、特定のシンボルについて不平を言うリンケージ エラーのバージョンであることに注意してください。
まったく同じ JNI libが、同じマシン上で Glassfish の外部にあるサンプル Java プログラムから正常に動作します。
dlsym
JDKソースを読むと、これは(Linuxを使用している)シンボルを返さない場合にのみ可能であるように思われます。(これはすべて Java 1.6.x です。)Glassfish が共有ライブラリでdlsym
このシンボルを認識できない原因となる可能性があることについて、私は困惑しています。
そこに何かアイデアはありますか?