JonasAdminJmx.java

00001 
00026 package org.objectweb.jonas.webapp.jonasadmin;
00027 
00028 import java.io.File;
00029 import java.util.ArrayList;
00030 import java.util.Collections;
00031 import java.util.Iterator;
00032 import java.util.List;
00033 import java.util.Set;
00034 
00035 import javax.management.MalformedObjectNameException;
00036 import javax.management.ObjectName;
00037 import javax.naming.Context;
00038 import javax.naming.NameClassPair;
00039 import javax.naming.NamingEnumeration;
00040 import javax.naming.NamingException;
00041 import javax.servlet.http.HttpServletRequest;
00042 
00043 import org.apache.struts.util.MessageResources;
00044 import org.objectweb.jonas.jmx.J2eeObjectName;
00045 import org.objectweb.jonas.jmx.JonasManagementRepr;
00046 import org.objectweb.jonas.jmx.JonasObjectName;
00047 import org.objectweb.jonas.jmx.ManagementException;
00048 import org.objectweb.jonas.mail.MailServiceImpl;
00049 import org.objectweb.jonas.jmx.CatalinaObjectName;
00050 import org.objectweb.jonas.webapp.jonasadmin.common.BeanComparator;
00051 import org.objectweb.jonas.webapp.jonasadmin.logging.LoggerItem;
00052 import org.objectweb.jonas.webapp.jonasadmin.mbean.MbeanItem;
00053 
00059 public class JonasAdminJmx {
00060 
00061 // ----------------------------------------------------------- Constants
00062 
00063     private static Object s_Synchro = new Object();
00064 
00065 // ----------------------------------------------------------- Constructors
00066 
00070     protected JonasAdminJmx() {
00071     }
00072 
00073 // --------------------------------------------------------- Public Methods
00074 
00084     public static String replace(String template, String placeholder, String value) {
00085         if (template == null) {
00086             return (null);
00087         }
00088         if ((placeholder == null) || (value == null)) {
00089             return (template);
00090         }
00091         String sRet = new String(template);
00092         while (true) {
00093             int index = sRet.indexOf(placeholder);
00094             if (index < 0) {
00095                 break;
00096             }
00097             StringBuffer temp = new StringBuffer(sRet.substring(0, index));
00098             temp.append(value);
00099             temp.append(sRet.substring(index + placeholder.length()));
00100             sRet = temp.toString();
00101         }
00102         return (sRet);
00103 
00104     }
00105 
00111     public static ObjectName getJ2eeDomainObjectName() {
00112         // Lookup for the first J2EEDomain managed object in the current MBeanServer
00113         ObjectName onDomains = J2eeObjectName.J2EEDomains();
00114         return getFirstMbean(onDomains);
00115     }
00116 
00125     public static ObjectName getJ2eeServerObjectName(String p_DomainName) {
00126         // Lookup for a J2EEServer managed object in the current MBeanServer
00127         ObjectName pattern_server_on = J2eeObjectName.J2EEServers(p_DomainName);
00128         ObjectName server_on = null;
00129         Iterator it = JonasManagementRepr.queryNames(pattern_server_on).iterator();
00130         if (it.hasNext()) {
00131             // Got one J2EEServer managed object ; normally should not be more than one
00132             server_on = (ObjectName) it.next();
00133         }
00134         return server_on;
00135     }
00136 
00146     public static ObjectName getJ2eeServerObjectName() {
00147         // Lookup for a J2EEServer managed object in the current MBeanServer
00148         ObjectName pattern_server_on = J2eeObjectName.J2EEServers();
00149         ObjectName server_on = null;
00150         Iterator it = JonasManagementRepr.queryNames(pattern_server_on).iterator();
00151         if (it.hasNext()) {
00152             // Got one J2EEServer managed object ; normally should not be more than one
00153             server_on = (ObjectName) it.next();
00154         }
00155         return server_on;
00156     }
00157 
00165     public static ArrayList getListRemoteJonasServerItem(HttpServletRequest p_Request)
00166         throws Exception {
00167         synchronized (s_Synchro) {
00168             ArrayList oServers = new ArrayList();
00169             // Save current RmiConnector
00170             String sCurrentRMIConnectorName = JonasManagementRepr.getCurrentRMIConnectorName();
00171 
00172             // Find all RmiConnectors
00173             Set setRmiConnector = JonasManagementRepr.getRMIConnectorsNames();
00174             if (setRmiConnector.size() > 0) {
00175                 Iterator oIt = setRmiConnector.iterator();
00176                 while (oIt.hasNext()) {
00177                     JonasServerItem oItem = new JonasServerItem();
00178                     oItem.setNameRmiConnector(oIt.next().toString());
00179                     // Find Jonas server name
00180                     JonasManagementRepr.setCurrentRMIConnectorName(oItem.getNameRmiConnector());
00181                     // Get J2EEServer object
00182                     ObjectName server_on = getJ2eeServerObjectName();
00183                     if (server_on != null) {
00184                         String serverName = server_on.getKeyProperty("name");
00185                         oItem.setNameServer(serverName);
00186                         oServers.add(oItem);
00187                     }
00188                 }
00189                 try {
00190                     // Restore current RmiConnector
00191                     JonasManagementRepr.setCurrentRMIConnectorName(sCurrentRMIConnectorName);
00192                 }
00193                 catch (Exception e) {
00194                     // May be the current server is shutdown
00195                     if (oServers.size() > 0) {
00196                         JonasServerItem oItem = (JonasServerItem) oServers.get(0);
00197                         JonasManagementRepr.setCurrentRMIConnectorName(oItem.getNameRmiConnector());
00198                     }
00199                 }
00200             }
00201             return oServers;
00202         }
00203     }
00204 
00212     public static boolean hasMBeanName(ObjectName p_On)
00213         throws ManagementException {
00214         synchronized (s_Synchro) {
00215             ArrayList al = new ArrayList();
00216             Iterator itNames = JonasManagementRepr.queryNames(p_On).iterator();
00217             if (itNames.hasNext()) {
00218                 return true;
00219             }
00220             return false;
00221         }
00222     }
00223 
00231     public static String getFirstMBeanName(ObjectName p_On)
00232         throws ManagementException {
00233         synchronized (s_Synchro) {
00234             ArrayList al = new ArrayList();
00235             Iterator itNames = JonasManagementRepr.queryNames(p_On).iterator();
00236             if (itNames.hasNext()) {
00237                 return itNames.next().toString();
00238             }
00239             return null;
00240         }
00241     }
00242 
00250     public static List getListMBeanName(ObjectName p_On)
00251         throws ManagementException {
00252         synchronized (s_Synchro) {
00253             ArrayList al = new ArrayList();
00254             Iterator itNames = JonasManagementRepr.queryNames(p_On).iterator();
00255             while (itNames.hasNext()) {
00256                 ObjectName item = (ObjectName) itNames.next();
00257                 al.add(item.toString());
00258             }
00259             Collections.sort(al);
00260             return al;
00261         }
00262     }
00263 
00272     public static ObjectName getFirstMbean(ObjectName p_On)
00273         throws ManagementException {
00274         synchronized (s_Synchro) {
00275             ArrayList al = new ArrayList();
00276             Iterator itNames = JonasManagementRepr.queryNames(p_On).iterator();
00277             if (itNames.hasNext()) {
00278                 return (ObjectName) itNames.next();
00279             }
00280             return null;
00281         }
00282     }
00283 
00292     public static List getListMbean(ObjectName p_On)
00293         throws ManagementException {
00294         synchronized (s_Synchro) {
00295             ArrayList al = new ArrayList();
00296             Iterator itNames = JonasManagementRepr.queryNames(p_On).iterator();
00297             while (itNames.hasNext()) {
00298                 al.add(itNames.next());
00299             }
00300             return al;
00301         }
00302     }
00303 
00312     public static String extractValueMbeanName(String pName, String pMBeanName) {
00313         String sValue = null;
00314         try {
00315             String sSearch = pName.trim() + "=";
00316             int iPos = pMBeanName.indexOf(sSearch);
00317             if (iPos > -1) {
00318                 sValue = pMBeanName.substring(iPos + sSearch.length());
00319                 iPos = sValue.indexOf(",");
00320                 if (iPos > -1) {
00321                     sValue = sValue.substring(0, iPos);
00322                 }
00323             }
00324         } catch (NullPointerException e) {
00325             // none
00326             sValue = null;
00327         }
00328         return sValue;
00329     }
00330 
00337     public static String extractFilename(String p_Path) {
00338         String sFilename = null;
00339         try {
00340             int iPosSeparator = p_Path.lastIndexOf("/");
00341             if (iPosSeparator < 0) {
00342                 iPosSeparator = p_Path.lastIndexOf("\\");
00343                 if (iPosSeparator < 0) {
00344                     sFilename = new String(p_Path);
00345                 }
00346                 else {
00347                     sFilename = p_Path.substring(iPosSeparator + 1);
00348                 }
00349             }
00350             else {
00351                 sFilename = p_Path.substring(iPosSeparator + 1);
00352             }
00353             if (sFilename.length() > 0) {
00354                 int iPos_1 = p_Path.indexOf(DIR_AUTOLOAD + "/" + sFilename);
00355                 int iPos_2 = p_Path.indexOf(DIR_AUTOLOAD + "\\" + sFilename);
00356                 if (iPos_1 > -1) {
00357                     sFilename = DIR_AUTOLOAD + "/" + sFilename;
00358                 }
00359                 else if (iPos_2 > -1) {
00360                     sFilename = DIR_AUTOLOAD + "\\" + sFilename;
00361                 }
00362             }
00363             else {
00364                 sFilename = null;
00365             }
00366         }
00367         catch (NullPointerException e) {
00368             // none action
00369             sFilename = null;
00370         }
00371         return sFilename;
00372     }
00373 
00377     private static String DIR_RARS = "rars";
00378     private static String DIR_AUTOLOAD = "autoload";
00379     private static String DIR_CONF = "conf";
00380 
00381     private static ArrayList getFilenames(String p_Directory, String p_Extension) {
00382         ArrayList al = new ArrayList();
00383         String sExt = "." + p_Extension.toLowerCase();
00384         String sFile;
00385 
00386         File oFile = new File(p_Directory);
00387         String[] asFiles = oFile.list();
00388         int iPos;
00389         if (asFiles != null) {
00390             for (int i = 0; i < asFiles.length; i++) {
00391                 oFile = new File(p_Directory, asFiles[i]);
00392                 if (oFile.isFile() == true) {
00393                     sFile = oFile.getName().toLowerCase();
00394                     iPos = sFile.lastIndexOf(sExt);
00395                     if (iPos > -1) {
00396                         if (iPos == (sFile.length() - sExt.length())) {
00397                             al.add(oFile.getName());
00398                         }
00399                     }
00400                 }
00401             }
00402         }
00403         Collections.sort(al);
00404         return al;
00405     }
00406 
00407     private static ArrayList getDirectories(String p_Directory) {
00408         ArrayList al = new ArrayList();
00409         String sFile;
00410 
00411         File oFile = new File(p_Directory);
00412         String[] asFiles = oFile.list();
00413 
00414         if (asFiles != null) {
00415             for (int i = 0; i < asFiles.length; i++) {
00416                 oFile = new File(p_Directory, asFiles[i]);
00417                 if (oFile.isDirectory() == true) {
00418                     al.add(oFile.getName());
00419                 }
00420             }
00421         }
00422         Collections.sort(al);
00423         return al;
00424     }
00425 
00426     private static void appendDirectory(ArrayList p_List, String p_Dir) {
00427         String sDir = p_Dir + "/";
00428         for (int i = 0; i < p_List.size(); i++) {
00429             p_List.set(i, sDir + p_List.get(i));
00430         }
00431     }
00432 
00439     public static ArrayList getJarFilesDeployable()
00440         throws ManagementException {
00441         ObjectName on = JonasObjectName.ejbService();
00442         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployableJars");
00443         String sDir = (String) JonasManagementRepr.getAttribute(on, "EjbjarsDirectory");
00444 
00445         String sEarDir = null;
00446         try {
00447             on = JonasObjectName.earService();
00448             sEarDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00449         }
00450         catch (Exception e) {
00451             // nothing, Ear service not found
00452         }
00453         return prepareContainersToDisplay(al, sDir, sEarDir);
00454     }
00455 
00462     public static ArrayList getRarFilesDeployable()
00463         throws ManagementException {
00464         ObjectName on = JonasObjectName.resourceService();
00465         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployableRars");
00466         String sDir = (String) JonasManagementRepr.getAttribute(on, "RarsDirectory");
00467 
00468         String sEarDir = null;
00469         try {
00470             on = JonasObjectName.earService();
00471             sEarDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00472         }
00473         catch (Exception e) {
00474             // nothing, Ear service not found
00475         }
00476         return prepareContainersToDisplay(al, sDir, sEarDir);
00477     }
00478 
00485     public static ArrayList getEarFilesDeployable()
00486         throws ManagementException {
00487         ObjectName on = JonasObjectName.earService();
00488         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployableEars");
00489         String sDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00490         return prepareContainersToDisplay(al, sDir, null);
00491     }
00492 
00499     public static ArrayList getWarFilesDeployable()
00500         throws ManagementException {
00501         ObjectName on = JonasObjectName.webContainerService();
00502         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployableWars");
00503         String sDir = (String) JonasManagementRepr.getAttribute(on, "WebappsDirectory");
00504 
00505         String sEarDir = null;
00506         try {
00507             on = JonasObjectName.earService();
00508             sEarDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00509         }
00510         catch (Exception e) {
00511             // nothing, Ear service not found
00512         }
00513         return prepareContainersToDisplay(al, sDir, sEarDir);
00514     }
00515 
00522     public static ArrayList getJarFilesDeployed()
00523         throws ManagementException {
00524         ObjectName on = JonasObjectName.ejbService();
00525         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployedJars");
00526         String sDir = (String) JonasManagementRepr.getAttribute(on, "EjbjarsDirectory");
00527 
00528         String sEarDir = null;
00529         try {
00530             on = JonasObjectName.earService();
00531             sEarDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00532         }
00533         catch (Exception e) {
00534             // nothing, Ear service not found
00535         }
00536         return prepareContainersToDisplay(al, sDir, sEarDir);
00537     }
00538 
00545     public static ArrayList getEarFilesDeployed()
00546         throws ManagementException {
00547         ObjectName on = JonasObjectName.earService();
00548         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployedEars");
00549         String sDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00550         return prepareContainersToDisplay(al, sDir, null);
00551     }
00552 
00559     public static ArrayList getRarFilesDeployed()
00560         throws ManagementException {
00561         ObjectName on = JonasObjectName.resourceService();
00562         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployedRars");
00563         String sDir = (String) JonasManagementRepr.getAttribute(on, "RarsDirectory");
00564 
00565         String sEarDir = null;
00566         try {
00567             on = JonasObjectName.earService();
00568             sEarDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00569         }
00570         catch (ManagementException e) {
00571             // nothing, Ear service not found
00572         }
00573         return prepareContainersToDisplay(al, sDir, sEarDir);
00574     }
00575 
00582     public static ArrayList getWarFilesDeployed()
00583         throws ManagementException {
00584         ObjectName on = JonasObjectName.webContainerService();
00585         ArrayList al = (ArrayList) JonasManagementRepr.getAttribute(on, "DeployedWars");
00586         String sDir = (String) JonasManagementRepr.getAttribute(on, "WebappsDirectory");
00587 
00588         String sEarDir = null;
00589         try {
00590             on = JonasObjectName.earService();
00591             sEarDir = (String) JonasManagementRepr.getAttribute(on, "AppsDirectory");
00592         }
00593         catch (ManagementException e) {
00594             // nothing, Ear service not found
00595         }
00596         return prepareContainersToDisplay(al, sDir, sEarDir);
00597     }
00598 
00607     public static ArrayList prepareContainersToDisplay(ArrayList p_Containers
00608         , String p_ContainerDir, String p_EarDir) {
00609         int iPos;
00610         String sPath;
00611         boolean bAdd;
00612         ArrayList al = new ArrayList();
00613         for (int i = 0; i < p_Containers.size(); i++) {
00614             // Delete prefix root container directory
00615             sPath = p_Containers.get(i).toString();
00616             iPos = sPath.indexOf(p_ContainerDir);
00617             if (iPos > -1) {
00618                 sPath = sPath.substring(p_ContainerDir.length());
00619             }
00620             // Delete suffix slash
00621             if (sPath.endsWith("/") == true) {
00622                 sPath = sPath.substring(0, sPath.length() - 1);
00623             }
00624             // Flag to filter
00625             bAdd = true;
00626             // Filter Jar or War include in Ear
00627             if (p_EarDir != null) {
00628                 iPos = sPath.indexOf(p_EarDir);
00629                 if (iPos > -1) {
00630                     bAdd = false;
00631                 }
00632 
00633             }
00634             if (bAdd == true) {
00635                 al.add(sPath);
00636             }
00637         }
00638         // Sort
00639         Collections.sort(al);
00640         return al;
00641     }
00642 
00643     private static ArrayList getFilesDeployed(ObjectName on)
00644         throws ManagementException {
00645         ArrayList alDeployed = new ArrayList();
00646         String sPath;
00647         String sFile;
00648         Iterator itNames = JonasAdminJmx.getListMBeanName(on).iterator();
00649         while (itNames.hasNext()) {
00650             sPath = JonasAdminJmx.extractValueMbeanName("fname", itNames.next().toString());
00651             sFile = JonasAdminJmx.extractFilename(sPath);
00652             if (sFile != null) {
00653                 alDeployed.add(sFile);
00654             }
00655         }
00656         Collections.sort(alDeployed);
00657         return alDeployed;
00658 
00659     }
00660 
00667     public static ArrayList getMailFilesDeployable()
00668         throws ManagementException {
00669         ObjectName on = JonasObjectName.mailService();
00670         return (ArrayList) JonasManagementRepr.getAttribute(on, "MailFactoryPropertiesFiles");
00671     }
00672 
00679     public static ArrayList getMimePartMailFilesDeployable()
00680         throws ManagementException {
00681         ObjectName on = JonasObjectName.mailService();
00682         return (ArrayList) JonasManagementRepr.getAttribute(on
00683             , "MimePartMailFactoryPropertiesFiles");
00684     }
00685 
00692     public static ArrayList getSessionMailFilesDeployable()
00693         throws ManagementException {
00694         ObjectName on = JonasObjectName.mailService();
00695         return (ArrayList) JonasManagementRepr.getAttribute(on, "SessionMailFactoryPropertiesFiles");
00696     }
00697 
00705     public static ArrayList getMimePartMailFilesDeployed(WhereAreYou p_WhereAreYou)
00706         throws ManagementException {
00707         ArrayList alDeployed = new ArrayList();
00708         String sName;
00709         String domainName = p_WhereAreYou.getCurrentDomainName();
00710         String serverName = p_WhereAreYou.getCurrentJonasServerName();
00711         ObjectName on = J2eeObjectName.JavaMailResources(domainName, serverName
00712             , MailServiceImpl.MIMEPART_PROPERTY_TYPE);
00713         Iterator itNames = JonasManagementRepr.queryNames(on).iterator();
00714         while (itNames.hasNext()) {
00715             ObjectName it_on = (ObjectName) itNames.next();
00716             sName = it_on.getKeyProperty("name");
00717             if (sName != null) {
00718                 alDeployed.add(sName);
00719             }
00720         }
00721         Collections.sort(alDeployed);
00722         return alDeployed;
00723     }
00724 
00732     public static ArrayList getSessionMailFilesDeployed(WhereAreYou p_WhereAreYou)
00733         throws ManagementException {
00734         ArrayList alDeployed = new ArrayList();
00735         String sName;
00736         String domainName = p_WhereAreYou.getCurrentDomainName();
00737         String serverName = p_WhereAreYou.getCurrentJonasServerName();
00738         ObjectName on = J2eeObjectName.JavaMailResources(domainName, serverName
00739             , MailServiceImpl.SESSION_PROPERTY_TYPE);
00740         Iterator itNames = JonasManagementRepr.queryNames(on).iterator();
00741         while (itNames.hasNext()) {
00742             ObjectName it_on = (ObjectName) itNames.next();
00743             sName = it_on.getKeyProperty("name");
00744             if (sName != null) {
00745                 alDeployed.add(sName);
00746             }
00747         }
00748         Collections.sort(alDeployed);
00749         return alDeployed;
00750     }
00751 
00759     public static ArrayList getMailFilesDeployed(WhereAreYou p_WhereAreYou)
00760         throws ManagementException {
00761         ArrayList alDeployed = getSessionMailFilesDeployed(p_WhereAreYou);
00762         alDeployed.addAll(getMimePartMailFilesDeployed(p_WhereAreYou));
00763         Collections.sort(alDeployed);
00764         return alDeployed;
00765     }
00766 
00773     public static ArrayList getDatasourceFilesDeployable()
00774         throws ManagementException {
00775         ObjectName on = JonasObjectName.databaseService();
00776         return (ArrayList) JonasManagementRepr.getAttribute(on, "DataSourcePropertiesFiles");
00777     }
00778 
00786     public static ArrayList getDatasourceFilesDeployed(String domainName, String serverName)
00787         throws ManagementException {
00788 
00789         ArrayList alDeployed = new ArrayList();
00790         ObjectName ons = J2eeObjectName.JDBCDataSources(domainName, serverName);
00791         // iterate ovent the JDBCDataSources within the current server
00792         Iterator itNames = JonasManagementRepr.queryNames(ons).iterator();
00793         String sName = null;
00794         while (itNames.hasNext()) {
00795             ObjectName on = (ObjectName) itNames.next();
00796             sName = on.getKeyProperty("name");
00797             if (sName != null) {
00798                 alDeployed.add(sName);
00799             }
00800         }
00801         Collections.sort(alDeployed);
00802         return alDeployed;
00803     }
00804 
00815     public static ArrayList getDatasourceDependences(String pDatasourceName, String domainName, String serverName)
00816         throws ManagementException {
00817         ObjectName jdbcDatasource = J2eeObjectName.getJDBCDataSource(domainName, serverName, pDatasourceName);
00818         String[] asParam = new String[1];
00819         String[] asSignature = new String[1];
00820         asSignature[0] = "java.lang.String";
00821         ArrayList al = new ArrayList();
00822         asParam[0] = (String) JonasManagementRepr.getAttribute(jdbcDatasource, "jndiName");
00823         if (JonasManagementRepr.isRegistered(JonasObjectName.ejbService())) {
00824             String sName;
00825             Iterator it = ((java.util.Set) JonasManagementRepr.invoke(JonasObjectName.ejbService()
00826                 , "getDataSourceDependence", asParam, asSignature)).iterator();
00827             while (it.hasNext()) {
00828                 sName = JonasAdminJmx.extractValueMbeanName(",name", it.next().toString());
00829                 if (sName != null) {
00830                     al.add(sName);
00831                 }
00832             }
00833             Collections.sort(al);
00834         }
00835         return al;
00836     }
00837 
00846     public static ArrayList getMailFactoryDependences(String p_MailFactoryName
00847         , WhereAreYou p_WhereAreYou)
00848         throws ManagementException {
00849         String jndiName = null;
00850         String domainName = p_WhereAreYou.getCurrentDomainName();
00851         String serverName = p_WhereAreYou.getCurrentJonasServerName();
00852         String type = MailServiceImpl.SESSION_PROPERTY_TYPE;
00853         // create an MBean name with the given MailFactory name
00854         // - try with a session Mail Factory type
00855         ObjectName on = J2eeObjectName.JavaMailResource(domainName, p_MailFactoryName, serverName
00856             , type);
00857         //ObjectName on = JonasObjectName.sessionMailFactory(p_MailFactoryName);
00858         if (JonasManagementRepr.isRegistered(on) != true) {
00859             // in this case, this is a MimePartDataSource mail factory
00860             //on = JonasObjectName.mimeMailFactory(p_MailFactoryName);
00861             type = MailServiceImpl.MIMEPART_PROPERTY_TYPE;
00862             on = J2eeObjectName.JavaMailResource(domainName, p_MailFactoryName, serverName, type);
00863         }
00864         jndiName = (String) JonasManagementRepr.getAttribute(on, "Name");
00865 
00866         String[] asParam = new String[1];
00867         String[] asSignature = new String[1];
00868         asSignature[0] = "java.lang.String";
00869         ArrayList al = new ArrayList();
00870         asParam[0] = jndiName;
00871         if (JonasManagementRepr.isRegistered(JonasObjectName.ejbService()) == true) {
00872             String sName;
00873             Iterator it = ((java.util.Set) JonasManagementRepr.invoke(JonasObjectName.ejbService()
00874                 , "getMailFactoryDependence", asParam, asSignature)).iterator();
00875             while (it.hasNext()) {
00876                 sName = JonasAdminJmx.extractValueMbeanName(",name", it.next().toString());
00877                 if (sName != null) {
00878                     al.add(sName);
00879                 }
00880             }
00881             Collections.sort(al);
00882         }
00883         return al;
00884     }
00885 
00893     public static ArrayList getSessionMailFactoriesDeployed(WhereAreYou p_WhereAreYou)
00894         throws ManagementException {
00895 
00896         ArrayList alDeployed = new ArrayList();
00897         String sName;
00898         String domainName = p_WhereAreYou.getCurrentDomainName();
00899         String serverName = p_WhereAreYou.getCurrentJonasServerName();
00900         String type = MailServiceImpl.SESSION_PROPERTY_TYPE;
00901 
00902         ObjectName any_on = J2eeObjectName.JavaMailResources(domainName, serverName, type);
00903         Iterator itNames = JonasManagementRepr.queryNames(any_on).iterator();
00904         while (itNames.hasNext()) {
00905             ObjectName on = (ObjectName) itNames.next();
00906             sName = on.getKeyProperty("name");
00907             if (sName != null) {
00908                 alDeployed.add(sName);
00909             }
00910         }
00911 
00912         Collections.sort(alDeployed);
00913         return alDeployed;
00914     }
00915 
00923     public static ArrayList getMimeMailPartFactoriesDeployed(WhereAreYou p_WhereAreYou)
00924         throws ManagementException {
00925         ArrayList alDeployed = new ArrayList();
00926         String sName;
00927         String domainName = p_WhereAreYou.getCurrentDomainName();
00928         String serverName = p_WhereAreYou.getCurrentJonasServerName();
00929         String type = MailServiceImpl.MIMEPART_PROPERTY_TYPE;
00930 
00931         ObjectName any_on = J2eeObjectName.JavaMailResources(domainName, serverName, type);
00932         Iterator itNames = JonasManagementRepr.queryNames(any_on).iterator();
00933         while (itNames.hasNext()) {
00934             ObjectName on = (ObjectName) itNames.next();
00935             sName = on.getKeyProperty("name");
00936             if (sName != null) {
00937                 alDeployed.add(sName);
00938             }
00939         }
00940         Collections.sort(alDeployed);
00941         return alDeployed;
00942     }
00943 
00951     public static ArrayList getSecurityMemoryFactories()
00952         throws ManagementException, MalformedObjectNameException {
00953         String sName;
00954         ArrayList al = new ArrayList();
00955         Iterator itNames = getListMBeanName(JonasObjectName.allSecurityMemoryFactories()).iterator();
00956         while (itNames.hasNext()) {
00957             sName = JonasAdminJmx.extractValueMbeanName(",name", itNames.next().toString());
00958             if (sName != null) {
00959                 al.add(sName);
00960             }
00961         }
00962         Collections.sort(al);
00963         return al;
00964     }
00965 
00973     public static ArrayList getSecurityDatasourceFactories()
00974         throws ManagementException, MalformedObjectNameException {
00975         String sName;
00976         ArrayList al = new ArrayList();
00977         Iterator itNames = getListMBeanName(JonasObjectName.allSecurityDatasourceFactories()).
00978             iterator();
00979         while (itNames.hasNext()) {
00980             sName = JonasAdminJmx.extractValueMbeanName(",name", itNames.next().toString());
00981             if (sName != null) {
00982                 al.add(sName);
00983             }
00984         }
00985         Collections.sort(al);
00986         return al;
00987     }
00988 
00996     public static ArrayList getSecurityLdapFactories()
00997         throws ManagementException, MalformedObjectNameException {
00998         String sName;
00999         ArrayList al = new ArrayList();
01000         Iterator itNames = getListMBeanName(JonasObjectName.allSecurityLdapFactories()).iterator();
01001         while (itNames.hasNext()) {
01002             sName = JonasAdminJmx.extractValueMbeanName(",name", itNames.next().toString());
01003             if (sName != null) {
01004                 al.add(sName);
01005             }
01006         }
01007         Collections.sort(al);
01008         return al;
01009     }
01010 
01019     public static String findSecurityFactorySubType(String p_NameFactory)
01020         throws ManagementException, MalformedObjectNameException {
01021         String sName;
01022         String sSubType = null;
01023         ObjectName on = null;
01024 
01025         Iterator itNames = getListMBeanName(JonasObjectName.allSecurityFactories()).iterator();
01026         while (itNames.hasNext()) {
01027             on = new ObjectName(itNames.next().toString());
01028             sName = on.getKeyProperty("name");
01029             if (p_NameFactory.equals(sName) == true) {
01030                 sSubType = on.getKeyProperty("subtype");
01031                 break;
01032             }
01033         }
01034         return sSubType;
01035     }
01036 
01045     public static ArrayList getUsers(String p_Resource)
01046         throws ManagementException, MalformedObjectNameException {
01047         String sName;
01048         ArrayList al = new ArrayList();
01049         Iterator itNames = getListMBeanName(JonasObjectName.allUsers(p_Resource)).iterator();
01050         while (itNames.hasNext()) {
01051             sName = JonasAdminJmx.extractValueMbeanName(",name", itNames.next().toString());
01052             if (sName != null) {
01053                 al.add(sName);
01054             }
01055         }
01056         Collections.sort(al);
01057         return al;
01058     }
01059 
01068     public static ArrayList getRoles(String p_Resource)
01069         throws ManagementException, MalformedObjectNameException {
01070         String sName;
01071         ArrayList al = new ArrayList();
01072         Iterator itNames = getListMBeanName(JonasObjectName.allRoles(p_Resource)).iterator();
01073         while (itNames.hasNext()) {
01074             sName = JonasAdminJmx.extractValueMbeanName(",name", itNames.next().toString());
01075             if (sName != null) {
01076                 al.add(sName);
01077             }
01078         }
01079         Collections.sort(al);
01080         return al;
01081     }
01082 
01091     public static ArrayList getGroups(String p_Resource)
01092         throws ManagementException, MalformedObjectNameException {
01093         String sName;
01094         ArrayList al = new ArrayList();
01095         Iterator itNames = getListMBeanName(JonasObjectName.allGroups(p_Resource)).iterator();
01096         while (itNames.hasNext()) {
01097             sName = JonasAdminJmx.extractValueMbeanName(",name", itNames.next().toString());
01098             if (sName != null) {
01099                 al.add(sName);
01100             }
01101         }
01102         Collections.sort(al);
01103         return al;
01104     }
01105 
01112     public static ArrayList getRegistryList()
01113         throws NamingException {
01114         synchronized (s_Synchro) {
01115             ArrayList oNames = new ArrayList();
01116             // get the naming context
01117             Context ctx = JonasManagementRepr.getContext();
01118             // get all names bounded in the contexr
01119             for (NamingEnumeration e = ctx.list(""); e.hasMoreElements(); ) {
01120                 oNames.add(((NameClassPair) e.nextElement()).getName());
01121             }
01122             return oNames;
01123         }
01124     }
01125 
01130     public static ArrayList getQueuesList() {
01131         synchronized (s_Synchro) {
01132             ObjectName jmsServMB = JonasObjectName.jmsService();
01133             Set queues = (Set) JonasManagementRepr.getAttribute(jmsServMB
01134                 , "AllJmsQueueDestinationNames");
01135             ArrayList al = new ArrayList();
01136             Iterator itNames = queues.iterator();
01137             while (itNames.hasNext()) {
01138                 al.add(itNames.next());
01139             }
01140             return al;
01141         }
01142     }
01143 
01148     public static ArrayList getTopicsList() {
01149         synchronized (s_Synchro) {
01150             ObjectName jmsServMB = JonasObjectName.jmsService();
01151             Set topics = (Set) JonasManagementRepr.getAttribute(jmsServMB
01152                 , "AllJmsTopicDestinationNames");
01153             ArrayList al = new ArrayList();
01154             Iterator itNames = topics.iterator();
01155             while (itNames.hasNext()) {
01156                 al.add(itNames.next());
01157             }
01158             return al;
01159         }
01160     }
01161 
01168     public static ArrayList getConnectionFactoriesList(MessageResources p_Resources) {
01169         synchronized (s_Synchro) {
01170             ObjectName jmsServMB = JonasObjectName.jmsService();
01171             String cfName = (String) JonasManagementRepr.getAttribute(jmsServMB
01172                 , "DefaultConnectionFactoryName");
01173             String tcfName = (String) JonasManagementRepr.getAttribute(jmsServMB
01174                 , "DefaultTopicConnectionFactoryName");
01175             String qcfName = (String) JonasManagementRepr.getAttribute(jmsServMB
01176                 , "DefaultQueueConnectionFactoryName");
01177             ArrayList al = new ArrayList();
01178             String comment = p_Resources.getMessage("tab.connfact.defaultconnfact");
01179             JmsConnFact cf = new JmsConnFact(cfName, comment);
01180             al.add(cf);
01181             comment = p_Resources.getMessage("tab.connfact.defaulttopicconnfact");
01182             cf = new JmsConnFact(tcfName, comment);
01183             al.add(cf);
01184             comment = p_Resources.getMessage("tab.connfact.defaultqueueconnfact");
01185             cf = new JmsConnFact(qcfName, comment);
01186             al.add(cf);
01187             return al;
01188         }
01189     }
01190 
01199     public static ArrayList getLoggers(MessageResources p_Resources, WhereAreYou p_WhereAreYou
01200         , boolean p_Action)
01201         throws ManagementException {
01202         ArrayList al = new ArrayList();
01203         String sActionForward;
01204         // Logger JOnAS
01205         if (p_Action == true) {
01206             sActionForward = "EditLoggingJonas.do";
01207         }
01208         else {
01209             sActionForward = "ActionEditLoggingJonas";
01210         }
01211         al.add(new LoggerItem(p_Resources.getMessage("logger.jonas.name"), LoggerItem.LOGGER_JONAS
01212             , sActionForward));
01213         // Logger Catalina
01214         if (p_WhereAreYou.isCatalinaServer() == true) {
01215             ObjectName on = CatalinaObjectName.catalinaValve(p_WhereAreYou.
01216                 getCurrentCatalinaDomainName(), "AccessLogValve"
01217                 , p_WhereAreYou.getCurrentCatalinaDefaultHostName());
01218 
01219             if (hasMBeanName(on) == true) {
01220                 if (p_Action == true) {
01221                     sActionForward = "EditCatalinaAccessLogger.do?select=" + on.toString();
01222                 }
01223                 else {
01224                     sActionForward = "ActionEditCatalinaAccessLogger";
01225                 }
01226 
01227                 al.add(new LoggerItem(p_Resources.getMessage("logger.catalina.access.name")
01228                     , LoggerItem.LOGGER_CATALINA_ACCESS, sActionForward, on.toString()));
01229 
01230             }
01231 
01232         }
01233         // sort
01234         Collections.sort(al, new BeanComparator(new String[]{"name"}));
01235         return al;
01236     }
01237 
01244     public static ArrayList getMbeansLists()
01245         throws ManagementException {
01246 
01247         MbeanItem oItem;
01248 
01249         // Create the new list
01250         ArrayList al = new ArrayList();
01251         // Dispath each Mbean in its list
01252         Iterator it = JonasAdminJmx.getListMbean(null).iterator();
01253         while (it.hasNext()) {
01254             oItem = MbeanItem.build((ObjectName) it.next());
01255             al.add(oItem);
01256         }
01257         return al;
01258     }
01259 
01266     public static ArrayList[] getFamiliesMbeansLists()
01267         throws ManagementException {
01268 
01269         MbeanItem oItem;
01270 
01271         // Create the new lists
01272         ArrayList[] als = new ArrayList[3];
01273         for (int i = 0; i < MbeanItem.SIZE_FAMILIES; i++) {
01274             als[i] = new ArrayList();
01275         }
01276         // Dispath each Mbean in its list
01277         Iterator it = JonasAdminJmx.getListMbean(null).iterator();
01278         while (it.hasNext()) {
01279             oItem = MbeanItem.build((ObjectName) it.next());
01280             als[oItem.getFamily()].add(oItem);
01281         }
01282         return als;
01283     }
01284 }

Generated on Tue Feb 15 15:05:26 2005 for JOnAS by  doxygen 1.3.9.1