1 23 package com.sun.enterprise.connectors.work.monitor; 24 25 import java.security.AccessController ; 26 import java.security.PrivilegedAction ; 27 import java.util.logging.Level ; 28 import java.util.logging.Logger ; 29 30 import javax.management.j2ee.statistics.Stats ; 31 32 import com.sun.enterprise.admin.monitor.registry.MonitoredObjectType; 33 import com.sun.enterprise.admin.monitor.registry.MonitoringLevel; 34 import com.sun.enterprise.admin.monitor.registry.MonitoringLevelListener; 35 import com.sun.enterprise.admin.monitor.registry.MonitoringRegistry; 36 import com.sun.enterprise.connectors.ActiveInboundResourceAdapter; 37 import com.sun.enterprise.connectors.ActiveResourceAdapter; 38 import com.sun.enterprise.connectors.ConnectorAdminServiceUtils; 39 import com.sun.enterprise.connectors.ConnectorConstants; 40 import com.sun.enterprise.connectors.ConnectorRegistry; 41 import com.sun.enterprise.server.ApplicationServer; 42 import com.sun.enterprise.server.ResourcesUtil; 43 import com.sun.enterprise.server.ServerContext; 44 import com.sun.logging.LogDomains; 45 46 56 public class ConnectorWorkMonitoringLevelListener implements 57 MonitoringLevelListener { 58 59 private static Logger _logger = LogDomains.getLogger( 60 LogDomains.RSR_LOGGER ); 61 private MonitoringRegistry registry_; 62 63 67 public void setLevel(MonitoringLevel level) { 68 } 69 70 74 public void changeLevel(MonitoringLevel from, MonitoringLevel to, 75 Stats handback) { 76 } 77 78 public void changeLevel(MonitoringLevel from, MonitoringLevel to, 79 MonitoredObjectType type) { 80 if ( from == to ) { 81 return; 83 } 84 85 AccessController.doPrivileged(new PrivilegedAction () { 86 public Object run() { 87 ServerContext ctxt = ApplicationServer.getServerContext(); 88 if (ctxt != null ) { 89 registry_ = ctxt.getMonitoringRegistry(); 90 } 91 return null; 92 } 93 }); 94 95 if (from == MonitoringLevel.OFF ) { 96 if (to == MonitoringLevel.HIGH || to == MonitoringLevel.LOW ) { 97 switchOnMonitoring(); 98 } 99 } 100 101 if (from == MonitoringLevel.HIGH || from == MonitoringLevel.LOW ) { 102 if ( to == MonitoringLevel.OFF ) { 103 switchOffMonitoring(); 104 } 105 } 106 } 107 108 111 private void switchOffMonitoring() { 112 if ( _logger.isLoggable(Level.FINE) ) { 113 _logger.fine("Switching level form ON to OFF"); 114 } 115 116 AccessController.doPrivileged( new PrivilegedAction () { 118 public Object run() { 119 ActiveResourceAdapter[] allRAs = ConnectorRegistry. 120 getInstance().getAllActiveResourceAdapters(); 121 if ( allRAs == null ) { 122 return null; 123 } 124 125 ActiveInboundResourceAdapter inboundRA = null; 126 for (int i = 0; i < allRAs.length; i++ ) { 127 if ( allRAs[i] != null 128 && allRAs[i] instanceof ActiveInboundResourceAdapter) { 129 try{ 130 inboundRA = (ActiveInboundResourceAdapter)allRAs[i]; 131 String moduleName = inboundRA.getModuleName(); 132 133 registry_.unregisterConnectorWorkMgmtStats( 134 ConnectorAdminServiceUtils.getApplicationName(moduleName), 135 ConnectorAdminServiceUtils.getConnectorModuleName(moduleName), 136 ConnectorAdminServiceUtils.isJMSRA(moduleName)); 137 138 setWorkManagementMonitoring(inboundRA, false); 140 } catch( Exception mre ) { 141 _logger.log( Level.INFO, "poolmon.cannot_unreg"); 142 } 143 } 144 } 145 return null; 146 } 147 }); 148 } 149 150 153 private void switchOnMonitoring() { 154 if ( _logger.isLoggable(Level.FINE) ) { 155 _logger.fine("Switching level form OFF to ON"); 156 } 157 158 AccessController.doPrivileged( new PrivilegedAction () { 159 public Object run() { 160 ActiveResourceAdapter[] allRAs = ConnectorRegistry. 161 getInstance().getAllActiveResourceAdapters(); 162 if ( allRAs == null ) { 163 return null; 164 } 165 166 ActiveInboundResourceAdapter inboundRA = null; 167 168 for (int i = 0; i < allRAs.length; i++ ) { 169 if ( allRAs[i] != null 170 && allRAs[i] instanceof ActiveInboundResourceAdapter) { 171 try{ 172 173 inboundRA = (ActiveInboundResourceAdapter)allRAs[i]; 174 ConnectorWorkMgmtStatsImpl workstatsimpl = 175 new ConnectorWorkMgmtStatsImpl(inboundRA); 176 String moduleName = inboundRA.getModuleName(); 177 178 if (ResourcesUtil.getInstance().belongToSystemRar(moduleName)) { 181 if (!ConnectorAdminServiceUtils.isJMSRA(moduleName)) { 182 continue; 183 } 184 } 185 186 setWorkManagementMonitoring(inboundRA, true); 188 189 registry_.registerConnectorWorkMgmtStats( 190 workstatsimpl, 191 ConnectorAdminServiceUtils.getApplicationName(moduleName), 192 ConnectorAdminServiceUtils.getConnectorModuleName(moduleName), 193 ConnectorAdminServiceUtils.isJMSRA(moduleName), 194 null); 195 196 } catch (Exception mre) { 197 _logger.log( Level.WARNING, "poolmon.cannot_reg", 198 mre.getMessage() ); 199 } 200 } 201 } 202 return null; 203 } 204 }); 205 } 206 207 private void setWorkManagementMonitoring(ActiveInboundResourceAdapter 208 adapter, boolean isEnabled) { 209 MonitorableWorkManager mwm = (MonitorableWorkManager)adapter. 210 getBootStrapContext().getWorkManager(); 211 mwm.setMonitoringEnabled(isEnabled); 212 } 213 214 } 215 | Popular Tags |