You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2002/09/16 10:26:46 UTC

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_util.h jk_jni_worker.c jk_util.c

hgomez      2002/09/16 01:26:46

  Modified:    jk/native/common jk_util.h jk_jni_worker.c jk_util.c
  Log:
  Add support for bridge parameter which allow to select which Tomcat should be used via JNI, for now only TC 3.2/3.3
  
  Revision  Changes    Path
  1.8       +12 -1     jakarta-tomcat-connectors/jk/native/common/jk_util.h
  
  Index: jk_util.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- jk_util.h	25 Jun 2002 07:06:18 -0000	1.7
  +++ jk_util.h	16 Sep 2002 08:26:46 -0000	1.8
  @@ -161,6 +161,10 @@
                               char **cp);
   
   
  +int jk_get_worker_bridge_type(jk_map_t *m, 
  +                              const char *wname,
  +                              unsigned *bt);
  +                              
   int jk_get_worker_jvm_path(jk_map_t *m, 
                              const char *wname, 
                              char **vm_path);
  @@ -203,6 +207,13 @@
                          const char *libpath);
   
   void jk_init_ws_service(jk_ws_service_t *s);
  +
  +
  +#define	TC32_BRIDGE_TYPE	32
  +#define	TC33_BRIDGE_TYPE	33
  +#define	TC40_BRIDGE_TYPE	40
  +#define	TC41_BRIDGE_TYPE	41
  +#define	TC50_BRIDGE_TYPE	50
   
   #ifdef __cplusplus
   extern "C" {
  
  
  
  1.15      +42 -13    jakarta-tomcat-connectors/jk/native/common/jk_jni_worker.c
  
  Index: jk_jni_worker.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_jni_worker.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- jk_jni_worker.c	12 Sep 2002 16:29:19 -0000	1.14
  +++ jk_jni_worker.c	16 Sep 2002 08:26:46 -0000	1.15
  @@ -109,9 +109,8 @@
   jint (JNICALL *jni_create_java_vm)(JavaVM **, JNIEnv **, void *) = NULL;
   jint (JNICALL *jni_get_created_java_vms)(JavaVM **, int, int *) = NULL;
   
  -#define JAVA_BRIDGE_CLASS_NAME ("org/apache/tomcat/modules/server/JNIEndpoint")
  -/* #define JAVA_BRIDGE_CLASS_NAME ("org/apache/tomcat/service/JNIEndpoint")
  - */
  +#define TC33_JAVA_BRIDGE_CLASS_NAME ("org/apache/tomcat/modules/server/JNIEndpoint")
  +#define TC32_JAVA_BRIDGE_CLASS_NAME ("org/apache/tomcat/service/JNIEndpoint")
   
   static jk_worker_t *the_singleton_jni_worker = NULL;
   
  @@ -151,6 +150,11 @@
        */
       char *tomcat_cmd_line;
   
  +	/*
  +	 * Bridge Type, Tomcat 32/33/40/41/5
  +	 */
  +	unsigned	bridge_type;
  +	
       /*
        * Classpath
        */
  @@ -363,6 +367,7 @@
   {
       jni_worker_t *p;
       int mem_config = 0;
  +    int	btype      = 0;
       char *str_config = NULL;
       JNIEnv *env;
   
  @@ -397,6 +402,10 @@
           return JK_FALSE;
       }
   
  +    if(jk_get_worker_bridge_type(props, p->name, (unsigned int *)&btype)) {
  +    	p->bridge_type = btype;
  +    }	
  +
       if(jk_get_worker_jvm_path(props, p->name, &str_config)) {
           p->jvm_dll_path  = jk_pool_strdup(&p->p, str_config);
       }
  @@ -678,6 +687,7 @@
       private_data->jk_shutdown_method    = NULL;
       private_data->tomcat_cmd_line       = NULL;
       private_data->tomcat_classpath      = NULL;
  +    private_data->bridge_type      		= TC33_BRIDGE_TYPE;
       private_data->jvm_dll_path          = NULL;
       private_data->tomcat_ms             = 0;
       private_data->tomcat_mx             = 0;
  @@ -1040,29 +1050,48 @@
                                JNIEnv *env,
                                jk_logger_t *l)
   {
  +	char *	btype;
  +	char *	ctype;
  +	
       jmethodID  constructor_method_id;
   
       jk_log(l, JK_LOG_DEBUG, 
              "Into get_bridge_object\n");
   
  -/* OS400 need conversion from EBCDIC to ASCII before passing to JNI*/
  +	switch (p->bridge_type)
  +	{
  +		case TC32_BRIDGE_TYPE :
  +			btype = TOMCAT32_JAVA_BRIDGE_CLASS_NAME;
  +			break;
  +			
  +		case TC33_BRIDGE_TYPE :
  +			btype = TOMCAT33_JAVA_BRIDGE_CLASS_NAME;
  +			break;
  +			
  +		case TC40_BRIDGE_TYPE :
  +		case TC41_BRIDGE_TYPE :
  +		case TC50_BRIDGE_TYPE :
  +	    	jk_log(l, JK_LOG_EMERG, "Bridge type %d not supported\n", p->bridge_type);
  +	    	return JK_FALSE;
  +	}
  +	
  +/* OS400 need conversion from EBCDIC to ASCII before passing to JNI */
   
   #ifdef AS400
  -#pragma convert(819)
  +	char *ctype = jk_pool_strdup(&p->p, btype);
  +	jk_xlate_to_ascii(ctype, strlen(ctype));
  +#else
  +	ctype = btype;
   #endif
   
  -    p->jk_java_bridge_class = (*env)->FindClass(env, JAVA_BRIDGE_CLASS_NAME);
  -
  -#ifdef AS400
  -#pragma convert(0)
  -#endif
  +    p->jk_java_bridge_class = (*env)->FindClass(env, ctype);
   
       if(!p->jk_java_bridge_class) {
  -	    jk_log(l, JK_LOG_EMERG, "Can't find class %s\n", JAVA_BRIDGE_CLASS_NAME);
  +	    jk_log(l, JK_LOG_EMERG, "Can't find class %s\n", btype);
   	    return JK_FALSE;
       }
       jk_log(l, JK_LOG_DEBUG, 
  -           "In get_bridge_object, loaded %s bridge class\n", JAVA_BRIDGE_CLASS_NAME);
  +           "In get_bridge_object, loaded %s bridge class\n", btype);
   
   #ifdef AS400
   #pragma convert(819)
  
  
  
  1.18      +41 -2     jakarta-tomcat-connectors/jk/native/common/jk_util.c
  
  Index: jk_util.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- jk_util.c	4 Sep 2002 11:31:33 -0000	1.17
  +++ jk_util.c	16 Sep 2002 08:26:46 -0000	1.18
  @@ -74,6 +74,7 @@
   #define MX_OF_WORKER                ("mx")
   #define MS_OF_WORKER                ("ms")
   #define CP_OF_WORKER                ("class_path")
  +#define BRIDGE_OF_WORKER			("bridge")
   #define JVM_OF_WORKER               ("jvm_lib")
   #define LIBPATH_OF_WORKER           ("ld_path")
   #define CMD_LINE_OF_WORKER          ("cmd_line")
  @@ -97,7 +98,13 @@
   #define DEFAULT_WORKER              JK_AJP12_WORKER_NAME
   #define WORKER_LIST_PROPERTY_NAME   ("worker.list")
   #define DEFAULT_LB_FACTOR           (1.0)
  -#define LOG_FORMAT          ("log_format")
  +#define LOG_FORMAT          		("log_format")
  +
  +#define TOMCAT32_BRIDGE_NAME   		("tomcat32")
  +#define TOMCAT33_BRIDGE_NAME   		("tomcat33")
  +#define TOMCAT40_BRIDGE_NAME   		("tomcat40")
  +#define TOMCAT41_BRIDGE_NAME   		("tomcat41")
  +#define TOMCAT50_BRIDGE_NAME   		("tomcat5")
   
   #define HUGE_BUFFER_SIZE (8*1024)
   #define LOG_LINE_SIZE    (1024)
  @@ -595,6 +602,38 @@
   
           *cp = map_get_string(m, buf, NULL);
           if(*cp) {
  +            return JK_TRUE;
  +        }
  +    }
  +
  +    return JK_FALSE;
  +}
  +
  +int jk_get_worker_bridge_type(jk_map_t *m, 
  +                              const char *wname,
  +                              unsigned *bt)
  +{
  +    char buf[1024];
  +	char *type;
  +	    
  +    if(m && bt && wname) {
  +        int i;
  +        sprintf(buf, "%s.%s.%s", PREFIX_OF_WORKER, wname, BRIDGE_OF_WORKER);
  +
  +        type = map_get_string(m, buf, NULL);
  +        
  +        if(type) {
  +        	if (! strcasecmp(type, TOMCAT32_BRIDGE_NAME))
  +        		*bt = TC32_BRIDGE_TYPE;
  +        	else if (! strcasecmp(type, TOMCAT33_BRIDGE_NAME))
  +        		*bt = TC33_BRIDGE_TYPE;
  +        	else if (! strcasecmp(type, TOMCAT40_BRIDGE_NAME))
  +        		*bt = TC40_BRIDGE_TYPE;
  +        	else if (! strcasecmp(type, TOMCAT41_BRIDGE_NAME))
  +        		*bt = TC41_BRIDGE_TYPE;
  +        	else if (! strcasecmp(type, TOMCAT50_BRIDGE_NAME))
  +        		*bt = TC50_BRIDGE_TYPE;
  +        		
               return JK_TRUE;
           }
       }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>