You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2004/07/09 06:24:57 UTC

DO NOT REPLY [Bug 29989] New: - jni of mod_jk2 doesn't work for win32 at all

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=29989>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=29989

jni of mod_jk2 doesn't work for win32 at all

           Summary: jni of mod_jk2 doesn't work for win32 at all
           Product: Tomcat 5
           Version: 5.0.0
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: Native:JK
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: quan.ma@nordsan.com


I'm using Win2kServer + Apache2.0.50 + Tomcat5.0.16 (or 5.0.25) + jk2-2.0.4-
win32-apache2.0.49.
After I copied mod_jk2.so (comes from jk2-2.0.4-win32-apache2.0.49) to 
${APACHE2_HOME}/modules, and finish all necessary configurations, start Apache2 
service, I got these messages from ${APACHE2_HOME}/logs/error.log:

[Fri Jul 09 12:06:20 2004] [notice] Parent: Created child process 444
[Fri Jul 09 12:06:20 2004] [notice] Child 444: Child process is running
[Fri Jul 09 12:06:20 2004] [error] workerEnv.initChannel() init failed for 
channel.jni:jni
[Fri Jul 09 12:06:20 2004] [error] workerEnv.initWorkers() init failed for 
worker.jni:onStartup
[Fri Jul 09 12:06:20 2004] [error] workerEnv.initWorkers() init failed for 
worker.jni:onShutdown
[Fri Jul 09 12:06:20 2004] [notice] Child 444: Acquired the start mutex.
[Fri Jul 09 12:06:20 2004] [notice] Child 444: Starting 100 worker threads.

so, as a result, the jni can not work.
I spent lot of time trying to solve the problem, but nothing happens.
Finally, I decide to look for the jk2 source code, see what's the matter of 
that.
Then, I found the following code in jakarta-tomcat-connectors-jk2-2.0.4-
src\jk\native2\server\apache2\mod_jk2.c:608 -

        ...
        if (workerEnv->maxDaemons < 2) {
            workerEnv->childId = proc.pid; //  HERE IS IT!!
            env->l->jkLog(env, env->l, JK_LOG_INFO,
                          "jk2_init() Setting scoreboard slot 0 for child %d\n",
                          proc.pid);
        }
        ...

but, in jakarta-tomcat-connectors-jk2-2.0.4-src\jk\native2
\common\jk_channel_jni.c:91 -

        ...
    if (wEnv->childId != 0) { // AND THIS ??
        if (jniW->worker != NULL)
            jniW->worker->mbean->disabled = JK_TRUE;
        return JK_ERR;
    }
        ...

That's it.
So, I chang it to -
        ...
        if (workerEnv->maxDaemons < 2) {
            workerEnv->childId = 0; //  HERE IS IT!!
            env->l->jkLog(env, env->l, JK_LOG_INFO,
                          "jk2_init() Setting scoreboard slot 0 for child %d\n",
                          proc.pid);
        }
        ...

I don't really know what it means, but it works for me now   :)

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org