costin 2003/03/17 11:24:13 Modified: catalina/src/share/org/apache/catalina/realm RealmBase.java Log: Registration. I also commented out main() - if it is really used, it should be in a separate class - in startup for example. The main() in Embeded should also be removed ( it seems like test code ) Revision Changes Path 1.7 +87 -46 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/RealmBase.java Index: RealmBase.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/RealmBase.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- RealmBase.java 12 Mar 2003 06:52:14 -0000 1.6 +++ RealmBase.java 17 Mar 2003 19:24:13 -0000 1.7 @@ -81,6 +81,10 @@ import javax.management.ObjectName; import javax.management.MBeanServer; import javax.management.MBeanRegistration; +import javax.management.InstanceNotFoundException; +import javax.management.MBeanException; +import javax.management.ReflectionException; +import javax.management.MalformedObjectNameException; import org.apache.catalina.Container; import org.apache.catalina.Context; @@ -91,6 +95,9 @@ import org.apache.catalina.LifecycleListener; import org.apache.catalina.Logger; import org.apache.catalina.Realm; +import org.apache.catalina.core.StandardEngine; +import org.apache.catalina.core.StandardHost; +import org.apache.catalina.core.StandardContext; import org.apache.catalina.deploy.LoginConfig; import org.apache.catalina.deploy.SecurityConstraint; @@ -101,6 +108,7 @@ import org.apache.catalina.util.MD5Encoder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.commons.modeler.Registry; /** * Simple implementation of <b>Realm</b> that reads an XML file to configure @@ -762,6 +770,9 @@ log.info(sm.getString("realmBase.alreadyStarted")); return; } + if( !initialized ) { + init(); + } lifecycle.fireLifecycleEvent(START_EVENT, null); started = true; @@ -959,24 +970,24 @@ } - /** - * Digest password using the algorithm especificied and - * convert the result to a corresponding hex string. - * If exception, the plain credentials string is returned - */ - public static void main(String args[]) { - - if(args.length > 2 && args[0].equalsIgnoreCase("-a")) { - for(int i=2; i < args.length ; i++){ - System.out.print(args[i]+":"); - System.out.println(Digest(args[i], args[1])); - } - } else { - System.out.println - ("Usage: RealmBase -a <algorithm> <credentials>"); - } - - } +// /** +// * Digest password using the algorithm especificied and +// * convert the result to a corresponding hex string. +// * If exception, the plain credentials string is returned +// */ +// public static void main(String args[]) { +// +// if(args.length > 2 && args[0].equalsIgnoreCase("-a")) { +// for(int i=2; i < args.length ; i++){ +// System.out.print(args[i]+":"); +// System.out.println(Digest(args[i], args[1])); +// } +// } else { +// System.out.println +// ("Usage: RealmBase -a <algorithm> <credentials>"); +// } +// +// } // -------------------- JMX and Registration -------------------- protected String type; @@ -1020,32 +1031,62 @@ public void postDeregister() { } - public void init() throws Exception { - if( container!= null ) { - return; - } - - // Register with the parent - Set names=null; - if( host == null ) { - // global - names=mserver.queryNames(new ObjectName(domain +":type=Engine,*"), null); - } else if( path==null ) { - names=mserver.queryNames(new ObjectName(domain + - ":type=Host,host=" + host +",*"), null); - } else { - names=mserver.queryNames(new ObjectName(domain +":j2eeType=WebModule,name=//" + - host + "/" + path + ",*"), null); + protected boolean initialized=false; + + public void init() { + if( initialized ) return; + + initialized=true; + if( container== null ) { + // Register with the parent + try { + Set names=null; + if( host == null ) { + // global + names=mserver.queryNames(new ObjectName(domain +":type=Engine,*"), null); + } else if( path==null ) { + names=mserver.queryNames(new ObjectName(domain + + ":type=Host,host=" + host +",*"), null); + } else { + names=mserver.queryNames(new ObjectName(domain +":j2eeType=WebModule,name=//" + + host + "/" + path + ",*"), null); + } + if( names.size() == 0 ) { + log.error("Can't register, no object found " + oname ); + return; + } + ObjectName parent=(ObjectName)names.iterator().next(); + log.info("Register with " + parent); + mserver.invoke(parent, "setRealm", new Object[] {this}, + new String[] {"org.apache.catalina.Realm"}); + } catch (Exception e) { + e.printStackTrace(); //To change body of catch statement use Options | File Templates. + } } - if( names.size() == 0 ) { - log.error("Can't register, no object found " + oname ); - return; + + if( oname==null ) { + // register + try { + StandardEngine engine=null; + String suffix=""; + if( container instanceof StandardEngine ) { + engine=(StandardEngine)container; + } else if( container instanceof StandardHost ) { + engine=(StandardEngine)container.getParent(); + suffix=",host=" + container.getName(); + } else if( container instanceof StandardContext ) { + engine=(StandardEngine)container.getParent().getParent(); + suffix=",host=" + container.getParent().getName() + + ",path=" + ((StandardContext)container).getPath(); + } + oname=new ObjectName(engine.getDomain()+ ":type=Realm" + suffix); + Registry.getRegistry().registerComponent(this, oname, null ); + + } catch (Throwable e) { + e.printStackTrace(); //To change body of catch statement use Options | File Templates. + } } - ObjectName parent=(ObjectName)names.iterator().next(); - log.info("Register with " + parent); - mserver.invoke(parent, "setRealm", new Object[] {this}, - new String[] {"org.apache.catalina.Realm"}); - } + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]