User: d_jencks
Date: 02/03/02 21:24:21
Modified: src/main/org/jboss/management/j2ee EjbModule.java
Log:
fix for bug 524925. cleaned up handling of no-parent for jsr-77 ejbModule mbeans and
added a testcase. Testcase will need changing if no-parent handling changes
Revision Changes Path
1.13 +70 -21 jboss/src/main/org/jboss/management/j2ee/EjbModule.java
Index: EjbModule.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/management/j2ee/EjbModule.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- EjbModule.java 27 Feb 2002 04:36:45 -0000 1.12
+++ EjbModule.java 3 Mar 2002 05:24:21 -0000 1.13
@@ -6,34 +6,37 @@
*/
package org.jboss.management.j2ee;
+
+
+
+
import java.net.URL;
-import java.util.Arrays;
+import java.security.InvalidParameterException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
-
import javax.management.AttributeChangeNotification;
-import javax.management.MalformedObjectNameException;
import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
import javax.management.Notification;
import javax.management.NotificationListener;
import javax.management.ObjectName;
-
import javax.management.j2ee.EJB;
import javax.management.j2ee.J2EEApplication;
import javax.management.j2ee.J2EEServer;
import javax.management.j2ee.JVM;
-
-import java.security.InvalidParameterException;
-
import org.jboss.logging.Logger;
import org.jboss.system.ServiceMBean;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
/**
* Root class of the JBoss JSR-77 implementation of
* {@link javax.management.j2ee.EJBModule EJBModule}.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Andreas Schaefer</a>.
- * @version $Revision: 1.12 $
+ * @version $Revision: 1.13 $
*
* <p><b>Revisions:</b>
*
@@ -55,6 +58,8 @@
private List mEJBs = new ArrayList();
private long mStartTime = -1;
private int mState = ServiceMBean.STOPPED;
+ //used to see if we should remove our parent when we are destroyed.
+ private static final Map iCreatedParent = new HashMap();
// Static --------------------------------------------------------
@@ -72,20 +77,48 @@
Logger lLog = Logger.getLogger( EjbModule.class );
String lDD = null;
ObjectName lApplication = null;
+ boolean fakeParent = false;
try {
- ObjectName lServer = (ObjectName) pServer.queryNames(
- new ObjectName( J2EEManagedObject.getDomainName() +
":type=J2EEServer,*" ),
- null
- ).iterator().next();
+ ObjectName serverQuery = new ObjectName( J2EEManagedObject.getDomainName()
+ ":type=J2EEServer,*" );
+ Set servers = pServer.queryNames(serverQuery, null);
+ if (servers.size() != 1)
+ {
+ lLog.error("Wrong number of servers found, should be 1: " +
servers.size());
+ return null;
+ } // end of if ()
+
+ ObjectName lServer = (ObjectName)servers.iterator().next();
+
String lServerName = lServer.getKeyPropertyList().get( "type" ) + "=" +
lServer.getKeyPropertyList().get( "name" );
+
lLog.debug( "EjbModule.create(), server name: " + lServerName );
- lApplication = (ObjectName) pServer.queryNames(
- new ObjectName( J2EEManagedObject.getDomainName() +
":type=J2EEApplication" +
- ",name=" + pApplicationName + "," + lServerName + ",*"
- ),
- null
- ).iterator().next();
+
+ ObjectName parentAppQuery = new ObjectName(
J2EEManagedObject.getDomainName() +
+ ":type=J2EEApplication" +
+ ",name=" + pApplicationName +
+ "," + lServerName + ",*");
+
+ Set parentApps = pServer.queryNames(parentAppQuery, null);
+
+ if (parentApps.size() == 0)
+ {
+ lApplication = org.jboss.management.j2ee.J2EEApplication.create(pServer,
+ pApplicationName,
+ null);
+ fakeParent = true;
+
+ } // end of if ()
+ else if (parentApps.size() == 1)
+ {
+ lApplication = (ObjectName)parentApps.iterator().next();
+ } // end of if ()
+ else
+ {
+ lLog.error("more than one parent app for this ejb-module: " +
parentApps.size());
+ return null;
+ } // end of else
+
// First get the deployement descriptor
lDD = J2EEDeployedObject.getDeploymentDescriptor( pURL,
J2EEDeployedObject.EJB );
}
@@ -94,13 +127,13 @@
return null;
}
try {
- // Now create the J2EEApplication
+ // Now create the J2EE EJB module
lLog.debug(
"Create EJB-Module, name: " + pName +
", application: " + lApplication +
", dd: " + lDD
);
- return pServer.createMBean(
+ ObjectName ejbModule = pServer.createMBean(
"org.jboss.management.j2ee.EjbModule",
null,
new Object[] {
@@ -114,6 +147,13 @@
String.class.getName()
}
).getObjectName();
+ //remember if we created our parent, if we did we have to kill it on
destroy.
+ if (fakeParent)
+ {
+ iCreatedParent.put(ejbModule, lApplication);
+ } // end of if ()
+ return ejbModule;
+
}
catch( Exception e ) {
lLog.error( "Could not create JSR-77 EjbModule: " + pApplicationName, e );
@@ -124,8 +164,17 @@
public static void destroy( MBeanServer pServer, String pModuleName ) {
Logger lLog = Logger.getLogger( EjbModule.class );
try {
+ ObjectName name = new ObjectName(pModuleName);
// Now remove the EjbModule
- pServer.unregisterMBean( new ObjectName( pModuleName ) );
+ pServer.unregisterMBean(name);
+ ObjectName parent = (ObjectName)iCreatedParent.get(name);
+ if (parent != null)
+ {
+ lLog.info( "Remove fake JSR-77 parent Application: " +
parent.toString() );
+ org.jboss.management.j2ee.J2EEApplication.destroy(pServer,
parent.toString());
+
+ } // end of if ()
+
}
catch( Exception e ) {
lLog.error( "Could not destory JSR-77 EjbModule: " + pModuleName, e );
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development