nacho       2002/06/23 15:48:02

  Modified:    jk/java/org/apache/jk/apr TomcatStarter.java
               jk/native2/common jk_worker_jni.c
  Log:
  * changed the JNI Java starter, to pass 2 filenames for stdout and stderr log, in 
addition to Args one..
  
  Revision  Changes    Path
  1.8       +10 -5     
jakarta-tomcat-connectors/jk/java/org/apache/jk/apr/TomcatStarter.java
  
  Index: TomcatStarter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/apr/TomcatStarter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TomcatStarter.java        10 May 2002 23:34:12 -0000      1.7
  +++ TomcatStarter.java        23 Jun 2002 22:48:02 -0000      1.8
  @@ -23,14 +23,19 @@
       // If someone has time - we can also guess the classpath and do other
       // fancy guessings.
       
  -    public static void main( String args[] ) {
  +    public static void main( String args[], String stdout, String stderr ) {
           System.err.println("TomcatStarter: main()");
           
           try {
  -            System.setOut( System.err );
  -            System.err.println("TomcatStarter: err");
  -            System.out.println("TomcatStarter: out");
  -
  +            try{ 
  +                if( stdout!=null ){
  +                    System.setOut( new PrintStream(new FileOutputStream(stdout)));
  +                }
  +                if( stderr!=null ){
  +                    System.setErr( new PrintStream(new FileOutputStream(stderr)));
  +                }                                                 
  +            }catch (Throwable th){
  +            }
               AprImpl.jniMode();
               
               // Find the class
  
  
  
  1.19      +21 -7     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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- jk_worker_jni.c   10 Jun 2002 21:55:06 -0000      1.18
  +++ jk_worker_jni.c   23 Jun 2002 22:48:02 -0000      1.19
  @@ -83,6 +83,8 @@
       jclass      jk_java_bridge_class;
       jmethodID   jk_main_method;
       char *className;
  +    char *stdout_name;
  +    char *stderr_name;
       /* Hack to allow multiple 'options' for the class name */
       char **classNameOptions;
       char **args;
  @@ -100,7 +102,7 @@
       p->jk_main_method =
           (*jniEnv)->GetStaticMethodID(jniEnv, p->jk_java_bridge_class,
                                        "main", 
  -                                     "([Ljava/lang/String;)V");
  +                                     
"([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
   
       
       if(!p->jk_main_method) {
  @@ -122,20 +124,24 @@
   static int JK_METHOD jk2_jni_worker_setProperty(jk_env_t *env, jk_bean_t *mbean,
                                                   char *name, void *valueP)
   {
  -    jk_worker_t *pThis=mbean->object;
  +    jk_worker_t *_this=mbean->object;
       char *value=valueP;
       jni_worker_data_t *jniWorker;
       int mem_config = 0;
   
  -    if(! pThis || ! pThis->worker_private) {
  +    if(! _this || ! _this->worker_private) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
                         "In validate, assert failed - invalid parameters\n");
           return JK_ERR;
       }
   
  -    jniWorker = pThis->worker_private;
  +    jniWorker = _this->worker_private;
   
  -    if( strcmp( name, "class" )==0 ) {
  +    if( strcmp( name, "stdout" )==0 ) {
  +        jniWorker->stdout_name = value;
  +    } else if( strcmp( name, "stderr" )==0 ) {
  +        jniWorker->stderr_name = value;
  +    } else if( strcmp( name, "class" )==0 ) {
           if( jniWorker->className != NULL ) {
               int i;
               for( i=0; i<4; i++ ) {
  @@ -172,7 +178,6 @@
       jclass jstringClass;
       jarray jargs;
       int i=0;
  -    
       if(! _this || ! _this->worker_private) {
           env->l->jkLog(env, env->l, JK_LOG_EMERG,
                         "In init, assert failed - invalid parameters\n");
  @@ -201,6 +206,13 @@
                         "workerJni.init() Can't attach to VM\n");
           return JK_ERR;
       }
  +
  +    if(jniWorker->stdout_name) {
  +        stdout_name = (*jniEnv)->NewStringUTF(jniEnv, jniWorker->stdout_name);
  +    }
  +    if(jniWorker->stderr_name) {
  +        stderr_name = (*jniEnv)->NewStringUTF(jniEnv, jniWorker->stderr_name);
  +    }
       
       jniWorker->jk_java_bridge_class =
           (*jniEnv)->FindClass(jniEnv, jniWorker->className );
  @@ -283,7 +295,7 @@
       (*jniEnv)->CallStaticVoidMethod(jniEnv,
                                       jniWorker->jk_java_bridge_class,
                                       jniWorker->jk_main_method,
  -                                    jargs);
  +                                    jargs,stdout_name,stderr_name);
       
       vm->detach(env, vm);
   
  @@ -365,6 +377,8 @@
   
       jniData->args = pool->calloc( env, pool, 64 * sizeof( char *));
       jniData->nArgs =0;
  +    jniData->stdout_name= NULL;
  +    jniData->stderr_name= NULL;
   
       result->init           = jk2_jni_worker_init;
       result->destroy        = jk2_jni_worker_destroy;
  
  
  

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

Reply via email to