You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2002/03/18 19:45:25 UTC
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_vm_default.c jk_worker_jni.c
costin 02/03/18 10:45:25
Modified: jk/native2/common jk_vm_default.c jk_worker_jni.c
Log:
Update to the new config mechanism.
Revision Changes Path
1.6 +55 -48 jakarta-tomcat-connectors/jk/native2/common/jk_vm_default.c
Index: jk_vm_default.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_vm_default.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- jk_vm_default.c 11 Mar 2002 11:41:11 -0000 1.5
+++ jk_vm_default.c 18 Mar 2002 18:45:25 -0000 1.6
@@ -75,6 +75,8 @@
*/
#include "jk_vm.h"
+#include "jk_config.h"
+
#if !defined(WIN32) && !defined(NETWARE)
#include <dlfcn.h>
@@ -325,27 +327,18 @@
than we do ).
*/
char* jk2_vm_guessJvmDll(jk_env_t *env, jk_map_t *props,
- jk_vm_t *jniw, char *prefix)
+ jk_vm_t *jniw)
{
char *jvm;
jk_pool_t *p=props->pool;
const char **current=defaultVM_PATH;
char *libp;
- /* Maybe he knows more */
- jvm =jk2_map_getStrProp( env, props, NULL, prefix,
- "jvm_lib", NULL );
- if( jvm!=NULL && jk2_file_exists(env, jvm)) {
- env->l->jkLog(env, env->l, JK_LOG_INFO,
- "jni.guessJvmDll() - user specified %s\n", jvm);
- return jvm;
- }
-
/* We need at least JAVA_HOME ( either env or in settings )
*/
while( *current != NULL ) {
- jvm = jk2_map_replaceProperties(env, props, p,
- (char *)p->pstrdup( env, p, *current ) );
+ jvm = jk2_config_replaceProperties(env, props, p,
+ (char *)p->pstrdup( env, p, *current ) );
if( jvm!=NULL && jk2_file_exists(env, jvm)) {
env->l->jkLog(env, env->l, JK_LOG_INFO,
@@ -683,7 +676,7 @@
jk2_guessTomcatHome( env, props );
while( *current != NULL ) {
- jkJar = jk2_map_replaceProperties(env, props, p,
+ jkJar = jk2_config_replaceProperties(env, props, p,
(char *)p->pstrdup( env, p, *current ));
if( jkJar!=NULL && jk2_file_exists(env, jkJar)) {
@@ -703,21 +696,49 @@
return NULL;
}
+static int
+jk2_jk_vm_setProperty(jk_env_t *env, jk_bean_t *mbean, char *name, void *valueP )
+{
+ jk_vm_t *_this=mbean->object;
+ char *value=valueP;
+
+ if( strcmp( name, "mx" )==0 ) {
+ /* atoi + K, M */
+ _this->tomcat_mx = jk2_config_str2int(env, value);
+ } else if( strcmp( name, "ms" )==0 ) {
+ _this->tomcat_ms = jk2_config_str2int(env, value);
+ } else if( strcmp( name, "class_path" )==0 ) {
+ _this->tomcat_classpath=value;
+ } else if( strcmp( name, "jvm_lib" )==0 ) {
+ _this->jvm_dll_path=value;
+ } else if( strcmp( name, "sysprops" )==0 ) {
+ _this->sysprops = jk2_config_split( env, _this->pool,
+ value, "*", NULL);
+#ifdef JNI_VERSION_1_2
+ } else if( strcmp( name, "java2opts" )==0 ) {
+ env->l->jkLog(env, env->l, JK_LOG_INFO,
+ "jni.validate() java2opts %s\n", value);
+ _this->java2opts = jk2_config_split( env, _this->pool,
+ value, "*", NULL);
+ } else if( strcmp( name, "java2lax" )==0 ) {
+ int int_config=atoi( value );
+ _this->java2lax = int_config ? JK_TRUE : JK_FALSE;
+#endif
+ } else {
+ return JK_FALSE;
+ }
+
+ return JK_TRUE;
+}
/** Initialize the vm properties
*/
-int jk2_jk_vm_init(jk_env_t *env, jk_vm_t *_this,
- jk_map_t *props, char *prefix)
+int jk2_jk_vm_init(jk_env_t *env, jk_vm_t *_this)
{
char *str_config;
int int_config;
+ jk_map_t *props=_this->properties;
- _this->tomcat_mx= jk2_map_getIntProp( env, props, NULL, prefix, "mx", 0 );
- _this->tomcat_ms= jk2_map_getIntProp( env, props, NULL, prefix, "ms", 0 );
-
- _this->tomcat_classpath= jk2_map_getStrProp( env, props, NULL, prefix,
- "class_path", NULL );
-
if(_this->tomcat_classpath == NULL ) {
_this->tomcat_classpath = jk2_guessClassPath( env, props );
}
@@ -734,7 +755,10 @@
return JK_FALSE;
}
- _this->jvm_dll_path=jk2_vm_guessJvmDll( env, props, _this, prefix );
+ if( _this->jvm_dll_path ==NULL ||
+ ! jk2_file_exists(env, _this->jvm_dll_path )) {
+ _this->jvm_dll_path=jk2_vm_guessJvmDll( env, props, _this );
+ }
if(!_this->jvm_dll_path ) {
env->l->jkLog(env, env->l, JK_LOG_EMERG,
@@ -744,32 +768,12 @@
env->l->jkLog(env, env->l, JK_LOG_INFO, "Jni lib: %s\n",
_this->jvm_dll_path);
- str_config= jk2_map_getStrProp( env, props, NULL, prefix,
- "sysprops", NULL );
- if(str_config!= NULL ) {
- _this->sysprops = jk2_map_split( env, NULL, _this->pool,
- str_config, "*", NULL);
- }
-
-#ifdef JNI_VERSION_1_2
- str_config= jk2_map_getStrProp(env, props, NULL,prefix ,"java2opts",NULL );
- if( str_config != NULL ) {
- env->l->jkLog(env, env->l, JK_LOG_INFO,
- "jni.validate() java2opts %s\n", str_config);
- _this->java2opts = jk2_map_split( env, NULL, _this->pool,
- str_config, "*", NULL);
- }
- int_config= jk2_map_getIntProp( env, props, NULL, prefix, "java2lax", -1 );
- if(int_config != -1 ) {
- _this->java2lax = int_config ? JK_TRUE : JK_FALSE;
- }
-#endif
return JK_TRUE;
}
int jk2_jk_vm_factory(jk_env_t *env, jk_pool_t *pool,
- void **result,
- char *type, char *name)
+ jk_bean_t *result,
+ char *type, char *name)
{
jk_vm_t *_this;
@@ -793,7 +797,10 @@
_this->attach=jk2_vm_attach;
_this->detach=jk2_vm_detach;
- *result=_this;
+ result->object=_this;
+ result->setAttribute=jk2_jk_vm_setProperty;
+ _this->mbean=result;
+
return JK_TRUE;
}
@@ -857,15 +864,15 @@
static void jk2_addDefaultLibPaths(jk_env_t *env, jk_map_t *props,
- jk_vm_t *jniw, char *prefix)
+ jk_vm_t *jniw)
{
jk_pool_t *p=props->pool;
const char **current=defaultLIB_PATH;
char *libp;
while( *current != NULL ) {
- libp = jk2_map_replaceProperties(env, props, p,
- p->pstrdup( env, p, *current ));
+ libp = jk2_config_replaceProperties(env, props, p,
+ p->pstrdup( env, p, *current ));
if( libp!=NULL && jk2_jk_dir_exists(env, libp)) {
env->l->jkLog(env, env->l, JK_LOG_INFO,
"jni.jk2_addDefaultLibPaths() %s\n", libp);
1.5 +36 -30 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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jk_worker_jni.c 2 Mar 2002 06:13:42 -0000 1.4
+++ jk_worker_jni.c 18 Mar 2002 18:45:25 -0000 1.5
@@ -123,14 +123,15 @@
}
-static int JK_METHOD jk2_jni_worker_setProperty(jk_env_t *env, jk_worker_t *pThis,
- char *name, char *value)
+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;
+ char *value=valueP;
jni_worker_data_t *jniWorker;
int mem_config = 0;
int rc;
JNIEnv *jniEnv;
- char *prefix;
if(! pThis || ! pThis->worker_private) {
env->l->jkLog(env, env->l, JK_LOG_ERROR,
@@ -140,6 +141,20 @@
jniWorker = pThis->worker_private;
+ if( strcmp( name, "class" )==0 ) {
+ jniWorker->className = value;
+ } else if( strcmp( name, "cmd_line" )==0 ) {
+ 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_TRUE;
}
@@ -163,13 +178,9 @@
jniWorker = _this->worker_private;
{
- char *prefix=(char *)_this->pool->alloc( env, _this->pool,
- strlen( _this->name ) + 10 );
- strcpy( prefix, "worker." );
- strcat( prefix, _this->name );
- fprintf(stderr, "Prefix= %s\n", prefix );
+ jniWorker->vm->properties=_this->workerEnv->initData;
- rc=jniWorker->vm->init(env, jniWorker->vm, _this->workerEnv->initData, prefix );
+ rc=jniWorker->vm->init(env, jniWorker->vm );
if( rc!=JK_TRUE ) {
env->l->jkLog(env, env->l, JK_LOG_ERROR,
@@ -177,19 +188,9 @@
return JK_FALSE;
}
}
-
- jniWorker->className = jk2_map_getStrProp( env, props, "worker",
- _this->name,
- "class", JAVA_BRIDGE_CLASS_NAME);
-
- jniWorker->tomcat_cmd_line = jk2_map_getStrProp( env, props, "worker",
- _this->name,
- "cmd_line", NULL );
-
- jniWorker->stdout_name= jk2_map_getStrProp( env, props, "worker",
- _this->name, "stdout", NULL );
- jniWorker->stderr_name= jk2_map_getStrProp( env, props, "worker",
- _this->name, "stderr", NULL );
+
+ if( jniWorker->className==NULL )
+ jniWorker->className=JAVA_BRIDGE_CLASS_NAME;
env->l->jkLog(env, env->l, JK_LOG_INFO,
"jni.validate() cmd: %s %s %s %s\n",
@@ -293,9 +294,11 @@
jniWorker->vm->detach(env, jniWorker->vm);
_this->workerEnv->vm= jniWorker->vm;
-
- _this->channel=env->getInstance(env, _this->pool,"channel",
- "jni" );
+
+ /* We can have a single jni channel per instance, the name is
+ hardcoded */
+ _this->channel=env->createInstance(env, _this->pool,"channel.jni",
+ "channel.jni");
if( _this->channel == NULL ) {
env->l->jkLog(env, env->l, JK_LOG_ERROR,
@@ -355,7 +358,7 @@
}
int JK_METHOD jk2_worker_jni_factory(jk_env_t *env, jk_pool_t *pool,
- void **result,
+ jk_bean_t *result,
const char *type, const char *name)
{
jk_worker_t *_this;
@@ -383,10 +386,9 @@
_this->worker_private=jniData;
_this->pool=pool;
- _this->name = _this->pool->pstrdup(env, _this->pool, name);
/* XXX split it in VM11 and VM12 util */
- jk2_jk_vm_factory( env, pool, &jniData->vm, "vm", "default" );
+ jniData->vm=env->createInstance( env, pool, "vm", "vm" );
jniData->jk_java_bridge_class = NULL;
jniData->jk_startup_method = NULL;
@@ -396,13 +398,17 @@
jniData->stdout_name = NULL;
jniData->stderr_name = NULL;
- _this->setProperty = jk2_jni_worker_setProperty;
_this->init = jk2_jni_worker_init;
_this->destroy = jk2_jni_worker_destroy;
_this->service = jk2_jni_worker_service;
- *result = _this;
+ result->object = _this;
+ result->setAttribute = jk2_jni_worker_setProperty;
+ _this->mbean=result;
+ _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");
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>