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>