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 2003/02/09 03:31:09 UTC
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core ContainerBase.java
costin 2003/02/08 18:31:08
Modified: catalina/src/share/org/apache/catalina/core
ContainerBase.java
Log:
Few changes to improve the mbean registration ( and unregistration ).
There are 2 scenarios I want to support: the current one, where components are
added/removed using internal APIs. And a JMX one, where components are created
by via JMX, and they insert themself in the running system ( for example the
admin interface creates a new connector Mbean and starts it ).
The big change is that the JMX handling is now in the component itself -
each component will be aware if its JMX identity and will take care of registering
and unregistering the childs. While this removes some of the flexibility
( i.e. JMX will be deep inside, instead of a listener ), I think the code
will be cleaner and we'll gain some other fexibilities.
Revision Changes Path
1.6 +47 -4 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ContainerBase.java
Index: ContainerBase.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ContainerBase.java 30 Jan 2003 14:24:43 -0000 1.5
+++ ContainerBase.java 9 Feb 2003 02:31:08 -0000 1.6
@@ -836,6 +836,21 @@
}
}
children.put(child.getName(), child);
+ if( child instanceof ContainerBase ) {
+ ContainerBase childCB=(ContainerBase)child;
+ // XXX we should also send JMX notifications
+ if( childCB.getObjectName() == null ) {
+ // child was not registered yet.
+ ObjectName oname=childCB.createObjectName(this.getDomain(),
+ this.getObjectName());
+ if( oname != null ) {
+ // XXX Register the child
+
+ }
+
+ }
+ }
+
fireContainerEvent(ADD_CHILD_EVENT, child);
}
@@ -1054,6 +1069,14 @@
log.error("ContainerBase.removeChild: stop: ", e);
}
}
+ if( child instanceof ContainerBase ) {
+ ContainerBase childCB=(ContainerBase)child;
+ // XXX we should also send JMX notifications
+ ObjectName oname=childCB.getObjectName();
+ if( oname != null ) {
+ // XXX UnRegister the child
+ }
+ }
fireContainerEvent(REMOVE_CHILD_EVENT, child);
child.setParent(null);
@@ -1226,9 +1249,10 @@
public synchronized void stop() throws LifecycleException {
// Validate and update our current component state
- if (!started)
- throw new LifecycleException
- (sm.getString("containerBase.notStarted", logName()));
+ if (!started) {
+ log.info(sm.getString("containerBase.notStarted", logName()));
+ return;
+ }
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(BEFORE_STOP_EVENT, null);
@@ -1523,5 +1547,24 @@
public void postDeregister() {
}
+
+ public ObjectName[] getChildren() {
+ ObjectName result[]=new ObjectName[children.size()];
+ Iterator it=children.values().iterator();
+ int i=0;
+ while( it.hasNext() ) {
+ Object next=it.next();
+ if( next instanceof ContainerBase ) {
+ result[i++]=((ContainerBase)next).getObjectName();
+ }
+ }
+ return result;
+ }
+
+ public ObjectName createObjectName(String domain, ObjectName parent) {
+ log.info("Create ObjectName " + domain + " " + parent );
+ return null;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org