nacho       2002/07/01 16:11:42

  Modified:    jk/native2/common jk_worker_jni.c
  Log:
  * set the stdout and stderr files using statics methods from AprImpl
  
  Revision  Changes    Path
  1.22      +46 -12    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.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- jk_worker_jni.c   1 Jul 2002 15:44:16 -0000       1.21
  +++ jk_worker_jni.c   1 Jul 2002 23:11:42 -0000       1.22
  @@ -81,7 +81,10 @@
   
   struct jni_worker_data {
       jclass      jk_java_bridge_class;
  +    jclass      jk_java_bridge_apri_class;
       jmethodID   jk_main_method;
  +    jmethodID   jk_setout_method;
  +    jmethodID   jk_seterr_method;
       char *className;
       char *stdout_name;
       char *stderr_name;
  @@ -102,14 +105,32 @@
       p->jk_main_method =
           (*jniEnv)->GetStaticMethodID(jniEnv, p->jk_java_bridge_class,
                                        "main", 
  -                                     
"([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
  +                                     "([Ljava/lang/String;)V");
  +    if(!p->jk_main_method) {
  +         env->l->jkLog(env, env->l, JK_LOG_EMERG, "Can't find main(String [])\n"); 
  +         return JK_ERR;
  +    }
   
  -    
  +    p->jk_setout_method =
  +        (*jniEnv)->GetStaticMethodID(jniEnv, p->jk_java_bridge_apri_class,
  +                                     "setOut", 
  +                                     "(Ljava/lang/String;)V");
       if(!p->jk_main_method) {
  -     env->l->jkLog(env, env->l, JK_LOG_EMERG, "Can't find main()\n"); 
  -     return JK_ERR;
  +         env->l->jkLog(env, env->l, JK_LOG_EMERG, "Can't find 
AprImpl.setOut(String)"); 
  +         return JK_ERR;
       }
   
  +    p->jk_seterr_method =
  +        (*jniEnv)->GetStaticMethodID(jniEnv, p->jk_java_bridge_apri_class,
  +                                     "setErr", 
  +                                     "(Ljava/lang/String;)V");
  +    if(!p->jk_main_method) {
  +         env->l->jkLog(env, env->l, JK_LOG_EMERG, "Can't find 
AprImpl.setErr(String)\n"); 
  +         return JK_ERR;
  +    }
  +
  +    
  +
       return JK_OK;
   }
   
  @@ -178,7 +199,6 @@
       char *str_config = NULL;
       jk_map_t *props=_this->workerEnv->initData;
       jk_vm_t *vm=_this->workerEnv->vm;
  -    jclass aprImplClass;
       jclass jstringClass;
       jarray jargs;
       int i=0;
  @@ -251,19 +271,18 @@
      XXX Need the way to customize JAVA_BRIDGE_CLASS_APRI, but since
      it's hardcoded in JniHandler.java doesn't matter for now.
   */
  -    aprImplClass =
  +    jniWorker->jk_java_bridge_apri_class =
           (*jniEnv)->FindClass(jniEnv, JAVA_BRIDGE_CLASS_APRI );
   
  -    if( aprImplClass == NULL ) {
  +    if( jniWorker->jk_java_bridge_apri_class == NULL ) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
                         "Can't find class %s\n", JAVA_BRIDGE_CLASS_APRI );
           /* [V] the detach here may segfault on 1.1 JVM... */
           vm->detach(env, vm);
           return JK_ERR;
       }
  -    rc = jk_jni_aprImpl_registerNatives( jniEnv, aprImplClass);
  -    
  -   if( rc != 0) {
  +    rc = jk_jni_aprImpl_registerNatives( jniEnv, 
jniWorker->jk_java_bridge_apri_class);
  +    if( rc != 0) {
        env->l->jkLog(env, env->l, JK_LOG_ERROR,
                         "Can't register native functions for %s \n", 
JAVA_BRIDGE_CLASS_APRI ); 
           vm->detach(env, vm);
  @@ -293,13 +312,28 @@
           (*jniEnv)->SetObjectArrayElement(jniEnv, jargs, i, arg );        
       }
       
  +    /* Set out and err stadard files */ 
  +
  +    env->l->jkLog(env, env->l, JK_LOG_INFO,
  +                  "jni.init() setting stdout=%s...\n",jniWorker->stdout_name);
  +    (*jniEnv)->CallStaticVoidMethod(jniEnv,
  +                                    jniWorker->jk_java_bridge_apri_class,
  +                                    jniWorker->jk_setout_method,
  +                                    stdout_name);
  +
  +    env->l->jkLog(env, env->l, JK_LOG_INFO,
  +                  "jni.init() setting stderr=%s...\n",jniWorker->stderr_name);
  +    (*jniEnv)->CallStaticVoidMethod(jniEnv,
  +                                    jniWorker->jk_java_bridge_apri_class,
  +                                    jniWorker->jk_seterr_method,
  +                                    stderr_name);
  +
       env->l->jkLog(env, env->l, JK_LOG_INFO,
                     "jni.init() calling main()...\n");
  -    
       (*jniEnv)->CallStaticVoidMethod(jniEnv,
                                       jniWorker->jk_java_bridge_class,
                                       jniWorker->jk_main_method,
  -                                    jargs,stdout_name,stderr_name);
  +                                    jargs);
       
       vm->detach(env, vm);
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to