There is no way in hell JNI can ever work with JK2.  
jk_channel_jni.c::jk2_channel_jni_open invokes
the java static method createJavaContext() which in turns tries to return a registered 
JkHandler for
Jni (ChannelJni) from the underlying hashtable. However when the in-process mode is 
enabled, there
is nobody registering any handlers! As a result null is trurned into c land from Java 
when createJavaContext
returns causing the JNI invocation to fail.

Tried this with Apache 2.0.43/44. With the out of process mode the declaration in 
server.xml cause a JkCoyoteHandler to be registered but with the in-process mode, this 
was suppose to happen automatically. Nobody seems to trigger a call to 
AprImpl.addJkHandler() - not in java land not in c land!

This convince me that JNI mode never really worked with JK2. If you look at the 
tomcat-user archive
you can see people falling on their faces trying to get this to work,but nobody has 
succedded now
I know why.

Someone should fix the Jk2 web site which lures naive users to believe that JNI mode 
is working with
Jk2! I did try to fix the problem by tring to instantiate a ChannelJni instance in the 
ctor of AprImpl and register
it into the jkHandlers table but  was getting NPE...don't know the code that well to 
know what assumptions are built into ChannelJni. Will continue to debug. 
_________________________________
Rahul Bhargava

Reply via email to