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]>

Reply via email to