costin 02/04/12 16:15:48 Modified: jk/native2/common jk_worker_jni.c Log: Remove duplicated ( or redundant ) code, simplify. Things are working now - but I still want to cut the JniMain and start directly tomcat ( or other java programs ) using normal main. And use ajp13 for shutdown. Revision Changes Path 1.7 +25 -106 jakarta-tomcat-connectors/jk/native2/common/jk_worker_jni.c Index: jk_worker_jni.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_jni.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- jk_worker_jni.c 26 Mar 2002 03:04:24 -0000 1.6 +++ jk_worker_jni.c 12 Apr 2002 23:15:48 -0000 1.7 @@ -73,8 +73,6 @@ struct jni_worker_data { - jk_vm_t *vm; - jclass jk_java_bridge_class; jmethodID jk_startup_method; jmethodID jk_shutdown_method; @@ -88,6 +86,8 @@ typedef struct jni_worker_data jni_worker_data_t; +/** -------------------- Startup -------------------- */ + /** Static methods - much easier... */ static int jk2_get_method_ids(jk_env_t *env, jni_worker_data_t *p, JNIEnv *jniEnv ) @@ -147,13 +147,10 @@ jniWorker->tomcat_cmd_line = value; } else if( strcmp( name, "stdout" )==0 ) { jniWorker->stdout_name=value; - } else if( strcmp( name, "lb_factor" )==0 ) { - pThis->lb_factor=atof( value ); } else if( strcmp( name, "stderr" )==0 ) { jniWorker->stderr_name=value; } else { - return rc=jniWorker->vm->mbean->setAttribute(env, jniWorker->vm->mbean, - name, value ); + return JK_FALSE; } return JK_TRUE; @@ -170,6 +167,7 @@ char *str_config = NULL; jk_map_t *props=_this->workerEnv->initData; jk_bean_t *chB; + jk_vm_t *vm=_this->workerEnv->vm; if(! _this || ! _this->worker_private) { env->l->jkLog(env, env->l, JK_LOG_EMERG, @@ -177,19 +175,14 @@ return JK_FALSE; } - jniWorker = _this->worker_private; - { - jniWorker->vm->properties=_this->workerEnv->initData; - - rc=jniWorker->vm->init(env, jniWorker->vm ); - - if( rc!=JK_TRUE ) { - env->l->jkLog(env, env->l, JK_LOG_ERROR, - "jni.validate() failed to load vm init params\n"); - return JK_FALSE; - } + if( vm == NULL ) { + env->l->jkLog(env, env->l, JK_LOG_ERROR, + "workerJni.init() No VM found\n"); + return JK_FALSE; } - + + jniWorker = _this->worker_private; + if( jniWorker->className==NULL ) jniWorker->className=JAVA_BRIDGE_CLASS_NAME; @@ -198,36 +191,24 @@ jniWorker->className, jniWorker->tomcat_cmd_line, jniWorker->stdout_name, jniWorker->stderr_name); - /* Verify if we can load the vm XXX do we want this now ? */ - - rc= jniWorker->vm->load(env, jniWorker->vm ); - - if( !rc ) { - env->l->jkLog(env, env->l, JK_LOG_EMERG, - "jni.validated() Error - can't load jvm dll\n"); - /* [V] no detach needed here */ - return JK_FALSE; - } - rc = jniWorker->vm->open(env, jniWorker->vm ); - - if( rc== JK_FALSE ) { - env->l->jkLog(env, env->l, JK_LOG_EMERG, "Fail-> can't open jvm\n"); - /* [V] no detach needed here */ + jniEnv = (JNIEnv *)vm->attach( env, vm ); + + if( jniEnv==NULL ) { + env->l->jkLog(env, env->l, JK_LOG_ERROR, + "workerJni.init() Can't attach to VM\n"); + return JK_FALSE; } - - jniEnv = (JNIEnv *)jniWorker->vm->attach( env, jniWorker->vm ); jniWorker->jk_java_bridge_class = (*jniEnv)->FindClass(jniEnv, jniWorker->className ); if( jniWorker->jk_java_bridge_class == NULL ) { env->l->jkLog(env, env->l, JK_LOG_EMERG, - "Can't find class %s in %s\n", jniWorker->className, - jniWorker->vm->tomcat_classpath ); + "Can't find class %s\n", jniWorker->className ); /* [V] the detach here may segfault on 1.1 JVM... */ - jniWorker->vm->detach(env, jniWorker->vm); + vm->detach(env, vm); return JK_FALSE; } @@ -239,39 +220,12 @@ env->l->jkLog(env, env->l, JK_LOG_EMERG, "Fail-> can't get method ids\n"); /* [V] the detach here may segfault on 1.1 JVM... */ - jniWorker->vm->detach(env, jniWorker->vm); - return JK_FALSE; - } - - env->l->jkLog(env, env->l, JK_LOG_INFO, - "jni.validate() ok\n"); - - - - - if(_this->workerEnv->vm != NULL ) { - env->l->jkLog(env, env->l, JK_LOG_DEBUG, - "jni.init(), done (been here!)\n"); - return JK_TRUE; - } - - if(!jniWorker->vm || - !jniWorker->jk_startup_method || - !jniWorker->jk_shutdown_method) { - env->l->jkLog(env, env->l, JK_LOG_EMERG, - "Fail-> worker not set completely\n"); + vm->detach(env, vm); return JK_FALSE; } env->l->jkLog(env, env->l, JK_LOG_INFO, "jni.init()\n"); - jniEnv=jniWorker->vm->attach(env, jniWorker->vm ); - if(jniEnv == NULL) { - env->l->jkLog(env, env->l, JK_LOG_ERROR, - "jni.init() can't attach to vm\n"); - return JK_FALSE; - } - if(jniWorker->tomcat_cmd_line) { cmd_line = (*jniEnv)->NewStringUTF(jniEnv, jniWorker->tomcat_cmd_line); } @@ -292,36 +246,15 @@ stdout_name, stderr_name); - jniWorker->vm->detach(env, jniWorker->vm); - - - _this->workerEnv->vm= jniWorker->vm; - - /* We can have a single jni channel per instance, the name is - hardcoded */ - chB=env->createBean2(env, _this->pool,"channel.jni", ""); - - if( chB == NULL || chB->object==NULL ) { - env->l->jkLog(env, env->l, JK_LOG_ERROR, - "Error creating jni channel\n"); - return JK_FALSE; - } - _this->channel=chB->object; - if(rc) { - env->l->jkLog(env, env->l, JK_LOG_INFO, - "jni.init() Tomcat initialized OK, done\n"); - return JK_TRUE; - } else { - env->l->jkLog(env, env->l, JK_LOG_EMERG, - "Fail-> could not initialize Tomcat\n"); - return JK_FALSE; - } + vm->detach(env, vm); + return JK_TRUE; } static int JK_METHOD jk2_jni_worker_destroy(jk_env_t *env, jk_worker_t *_this) { jni_worker_data_t *jniWorker; JNIEnv *jniEnv; + jk_vm_t *vm=_this->workerEnv->vm; if(!_this || ! _this->worker_private) { env->l->jkLog(env, env->l, JK_LOG_EMERG, @@ -331,25 +264,19 @@ jniWorker = _this->worker_private; - if(!jniWorker->vm) { - env->l->jkLog(env, env->l, JK_LOG_EMERG, - "In destroy, JVM not intantiated\n"); - return JK_FALSE; - } - if(! jniWorker->jk_shutdown_method) { env->l->jkLog(env, env->l, JK_LOG_EMERG, "In destroy, Tomcat not intantiated\n"); return JK_FALSE; } - if((jniEnv = jniWorker->vm->attach(env, jniWorker->vm))) { + if((jniEnv = vm->attach(env, vm))) { env->l->jkLog(env, env->l, JK_LOG_INFO, "jni.destroy(), shutting down Tomcat...\n"); (*jniEnv)->CallStaticVoidMethod(jniEnv, jniWorker->jk_java_bridge_class, jniWorker->jk_shutdown_method); - jniWorker->vm->detach(env, jniWorker->vm); + vm->detach(env, vm); } _this->pool->close(env, _this->pool); @@ -390,11 +317,6 @@ _this->pool=pool; - /* XXX split it in VM11 and VM12 util */ - jkb=env->createBean2( env, pool, "vm", "" ); - if( jkb==NULL ) return JK_FALSE; - jniData->vm=jkb->object; - jniData->jk_java_bridge_class = NULL; jniData->jk_startup_method = NULL; jniData->jk_shutdown_method = NULL; @@ -414,9 +336,6 @@ _this->workerEnv=env->getByName( env, "workerEnv" ); _this->workerEnv->addWorker( env, _this->workerEnv, _this ); - env->l->jkLog(env, env->l, JK_LOG_INFO, - "jni.worker_factory() done\n"); - return JK_TRUE; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>