costin 2003/03/03 23:14:40 Modified: jk/native2/common jk_config.c Log: Deal with changes in "disabled" - call init/destroy methods. Few other small config fixes. Revision Changes Path 1.30 +42 -6 jakarta-tomcat-connectors/jk/native2/common/jk_config.c Index: jk_config.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_config.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- jk_config.c 4 Feb 2003 07:39:59 -0000 1.29 +++ jk_config.c 4 Mar 2003 07:14:40 -0000 1.30 @@ -160,7 +160,7 @@ name= cfg->pool->pstrdup( env, cfg->pool, name ); val= cfg->pool->pstrdup( env, cfg->pool, val ); - + if (strlen(name) && *name == '$') { cfg->map->put(env, cfg->map, name + 1, val, NULL); return JK_OK; @@ -222,10 +222,16 @@ return JK_OK; } if( strcmp( name, "disabled" ) == 0 ) { + int oldDisabled=mbean->disabled; + mbean->disabled=atoi( val ); if(mbean->setAttribute) { mbean->setAttribute( env, mbean, name, val ); } + + /* State change ... - it needs to be handled at the end*/ + /* if( oldDisabled != mbean->disabled ) { */ + /* } */ return JK_OK; } if( strcmp( name, "info" ) == 0 ) { @@ -402,8 +408,9 @@ jk_map_t *prefNode=cfg->cfgData->get(env, cfg->cfgData, name); jk_bean_t *bean; - int ver; + long ver; char *verString; + int oldDisabled=0; if( cfg->mbean->debug > 5 ) env->l->jkLog(env, env->l, JK_LOG_DEBUG, @@ -417,7 +424,7 @@ } bean=env->createBean( env, cfg->pool, name ); } - + if( bean == NULL ) { /* Can't create it, save the value in our map */ env->l->jkLog(env, env->l, JK_LOG_ERROR, @@ -425,14 +432,17 @@ return JK_ERR; } + oldDisabled=bean->disabled; + verString= prefNode->get( env, prefNode, "ver" ); if( !firstTime ) { + /* No ver option - assume it didn't change */ if( verString == NULL ) { return JK_OK; } - ver=atoi( verString ); + ver=atol( verString ); - if( ver <= bean->ver) { + if( ver == bean->ver) { /* Object didn't change */ return JK_OK; @@ -441,7 +451,7 @@ if( !firstTime ) env->l->jkLog(env, env->l, JK_LOG_INFO, - "config.update(): Updating %s\n", name ); + "config.update(): Updating %s %ld %ld %d\n", name, ver, bean->ver, getpid() ); /* XXX Maybe we shoud destroy/init ? */ @@ -452,5 +462,31 @@ cfg->setProperty( env, cfg, bean, pname, pvalue ); } + env->l->jkLog(env, env->l, JK_LOG_INFO, + "config.update(): done %s\n", name ); + + if( !firstTime ) { + /* Deal with lifecycle - if a mbean has been enabled or disabled */ + if( oldDisabled != bean->disabled ) { + /* State change ... */ + if( bean->disabled==0 ) { + /* Start */ + if( bean->init != NULL ) { + env->l->jkLog(env, env->l, JK_LOG_INFO, + "config.update(): Starting %s\n", name ); + bean->init(env, bean); + } + } else { + /* Stop */ + env->l->jkLog(env, env->l, JK_LOG_INFO, + "config.update(): Stopping %s\n", name ); + bean->destroy(env, bean); + } + + } + + } + + return JK_OK; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]