1 17 package org.apache.geronimo.console.util; 18 19 import java.io.File ; 20 import java.util.Map ; 21 import java.util.regex.Pattern ; 22 23 import javax.enterprise.deploy.spi.DeploymentManager ; 24 import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException ; 25 import javax.naming.InitialContext ; 26 import javax.naming.NamingException ; 27 import javax.portlet.PortletRequest; 28 import javax.portlet.PortletSession; 29 import javax.portlet.RenderResponse; 30 import javax.security.auth.Subject ; 31 import javax.security.auth.login.LoginException ; 32 import javax.security.auth.spi.LoginModule ; 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpSession ; 35 36 import org.apache.commons.logging.Log; 37 import org.apache.commons.logging.LogFactory; 38 import org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl; 39 import org.apache.geronimo.gbean.AbstractName; 40 import org.apache.geronimo.gbean.GBeanData; 41 import org.apache.geronimo.kernel.Kernel; 42 import org.apache.geronimo.kernel.KernelRegistry; 43 import org.apache.geronimo.kernel.config.ConfigurationModuleType; 44 import org.apache.geronimo.kernel.proxy.GeronimoManagedBean; 45 import org.apache.geronimo.kernel.repository.Artifact; 46 import org.apache.geronimo.kernel.repository.Repository; 47 import org.apache.geronimo.management.J2EEDeployedObject; 48 import org.apache.geronimo.management.geronimo.J2EEDomain; 49 import org.apache.geronimo.management.geronimo.J2EEServer; 50 import org.apache.geronimo.management.geronimo.JCAAdminObject; 51 import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory; 52 import org.apache.geronimo.management.geronimo.JCAResource; 53 import org.apache.geronimo.management.geronimo.JMSBroker; 54 import org.apache.geronimo.management.geronimo.JMSConnector; 55 import org.apache.geronimo.management.geronimo.JMSManager; 56 import org.apache.geronimo.management.geronimo.JVM; 57 import org.apache.geronimo.management.geronimo.ResourceAdapter; 58 import org.apache.geronimo.management.geronimo.ResourceAdapterModule; 59 import org.apache.geronimo.management.geronimo.WebAccessLog; 60 import org.apache.geronimo.management.geronimo.WebConnector; 61 import org.apache.geronimo.management.geronimo.WebContainer; 62 import org.apache.geronimo.management.geronimo.WebManager; 63 import org.apache.geronimo.system.logging.SystemLog; 64 65 68 public class PortletManager { 69 private final static Log log = LogFactory.getLog(PortletManager.class); 70 private final static String HELPER_KEY = "org.apache.geronimo.console.ManagementHelper"; 72 private final static String DOMAIN_KEY = "org.apache.geronimo.console.J2EEDomain"; 73 private final static String SERVER_KEY = "org.apache.geronimo.console.J2EEServer"; 74 private final static String JVM_KEY = "org.apache.geronimo.console.JVM"; 75 private final static String SYSTEM_LOG_KEY = "org.apache.geronimo.console.SystemLog"; 76 79 private static ManagementHelper createHelper() { 80 Kernel kernel = null; 82 try { 83 kernel = (Kernel) new InitialContext ().lookup("java:comp/GeronimoKernel"); 84 } catch (NamingException e) { 85 } 87 if (kernel == null) { 88 log.debug("Unable to find kernel in JNDI; using KernelRegistry instead"); 89 kernel = KernelRegistry.getSingleKernel(); 90 } 91 return new KernelManagementHelper(kernel); 92 } 93 94 public static DeploymentManager getDeploymentManager(PortletRequest request) { 95 DeploymentFactoryImpl factory = new DeploymentFactoryImpl(); 96 try { 97 return factory.getDeploymentManager("deployer:geronimo:inVM", null, null); 98 } catch (DeploymentManagerCreationException e) { 99 log.error(e.getMessage(), e); 100 return null; 101 } 102 } 103 104 public static ManagementHelper getManagementHelper(PortletRequest request) { 105 ManagementHelper helper = (ManagementHelper) request.getPortletSession(true).getAttribute(HELPER_KEY, PortletSession.APPLICATION_SCOPE); 106 if (helper == null) { 107 helper = createHelper(); 108 request.getPortletSession().setAttribute(HELPER_KEY, helper, PortletSession.APPLICATION_SCOPE); 109 } 110 return helper; 111 } 112 113 public static ManagementHelper getManagementHelper(HttpSession session) { 114 ManagementHelper helper = (ManagementHelper) session.getAttribute(HELPER_KEY); 115 if (helper == null) { 116 helper = createHelper(); 117 session.setAttribute(HELPER_KEY, helper); 118 } 119 return helper; 120 } 121 122 public static J2EEDomain getCurrentDomain(PortletRequest request) { 123 J2EEDomain domain = (J2EEDomain) request.getPortletSession(true).getAttribute(DOMAIN_KEY, PortletSession.APPLICATION_SCOPE); 124 if (domain == null) { 125 domain = getManagementHelper(request).getDomains()[0]; request.getPortletSession().setAttribute(DOMAIN_KEY, domain, PortletSession.APPLICATION_SCOPE); 127 } 128 return domain; 129 130 } 131 132 public static J2EEServer getCurrentServer(PortletRequest request) { 133 J2EEServer server = (J2EEServer) request.getPortletSession(true).getAttribute(SERVER_KEY, PortletSession.APPLICATION_SCOPE); 134 if (server == null) { 135 server = getCurrentDomain(request).getServerInstances()[0]; request.getPortletSession().setAttribute(SERVER_KEY, server, PortletSession.APPLICATION_SCOPE); 137 } else { 138 } 140 return server; 141 } 142 143 public static JVM getCurrentJVM(PortletRequest request) { 144 JVM jvm = (JVM) request.getPortletSession(true).getAttribute(JVM_KEY, PortletSession.APPLICATION_SCOPE); 145 if (jvm == null) { 146 ManagementHelper helper = getManagementHelper(request); 147 jvm = helper.getJavaVMs(getCurrentServer(request))[0]; request.getPortletSession().setAttribute(JVM_KEY, jvm, PortletSession.APPLICATION_SCOPE); 149 } 150 return jvm; 151 } 152 153 public static void testLoginModule(PortletRequest request, LoginModule module, Map options) { 154 ManagementHelper helper = getManagementHelper(request); 155 helper.testLoginModule(getCurrentServer(request), module, options); 156 } 157 158 public static Subject testLoginModule(PortletRequest request, LoginModule module, Map options, String username, String password) throws LoginException { 159 ManagementHelper helper = getManagementHelper(request); 160 return helper.testLoginModule(getCurrentServer(request), module, options, username, password); 161 } 162 163 public static ResourceAdapterModule[] getOutboundRAModules(PortletRequest request, String iface) { 164 ManagementHelper helper = getManagementHelper(request); 165 return helper.getOutboundRAModules(getCurrentServer(request), iface); 166 } 167 168 public static ResourceAdapterModule[] getOutboundRAModules(PortletRequest request, String [] iface) { 169 ManagementHelper helper = getManagementHelper(request); 170 return helper.getOutboundRAModules(getCurrentServer(request), iface); 171 } 172 173 public static ResourceAdapterModule[] getAdminObjectModules(PortletRequest request, String [] ifaces) { 174 ManagementHelper helper = getManagementHelper(request); 175 return helper.getAdminObjectModules(getCurrentServer(request), ifaces); 176 } 177 178 public static JCAManagedConnectionFactory[] getOutboundFactoriesOfType(PortletRequest request, String iface) { 179 ManagementHelper helper = getManagementHelper(request); 180 return helper.getOutboundFactories(getCurrentServer(request), iface); 181 } 182 183 public static JCAManagedConnectionFactory[] getOutboundFactoriesForRA(PortletRequest request, AbstractName resourceAdapterModuleName) { 184 ManagementHelper helper = getManagementHelper(request); 185 return helper.getOutboundFactories((ResourceAdapterModule) helper.getObject(resourceAdapterModuleName)); 186 } 187 188 public static JCAManagedConnectionFactory[] getOutboundFactoriesForRA(PortletRequest request, AbstractName resourceAdapterModuleName, String iface) { 189 ManagementHelper helper = getManagementHelper(request); 190 return helper.getOutboundFactories((ResourceAdapterModule) helper.getObject(resourceAdapterModuleName), iface); 191 } 192 193 public static JCAManagedConnectionFactory[] getOutboundFactoriesForRA(PortletRequest request, ResourceAdapterModule module) { 194 ManagementHelper helper = getManagementHelper(request); 195 return helper.getOutboundFactories(module); 196 } 197 198 public static JCAManagedConnectionFactory[] getOutboundFactoriesForRA(PortletRequest request, ResourceAdapterModule module, String iface) { 199 ManagementHelper helper = getManagementHelper(request); 200 return helper.getOutboundFactories(module, iface); 201 } 202 203 public static JCAManagedConnectionFactory[] getOutboundFactoriesForRA(PortletRequest request, ResourceAdapterModule module, String [] iface) { 204 ManagementHelper helper = getManagementHelper(request); 205 return helper.getOutboundFactories(module, iface); 206 } 207 208 public static JCAAdminObject[] getAdminObjectsForRA(PortletRequest request, ResourceAdapterModule module, String [] ifaces) { 210 ManagementHelper helper = getManagementHelper(request); 211 return helper.getAdminObjects(module, ifaces); 212 } 213 214 public static WebManager[] getWebManagers(PortletRequest request) { 215 return getCurrentServer(request).getWebManagers(); 216 } 217 218 public static WebManager getWebManager(PortletRequest request, AbstractName managerName) { 219 ManagementHelper helper = getManagementHelper(request); 220 return (WebManager) helper.getObject(managerName); 221 } 222 223 233 public static WebAccessLog getWebAccessLog(PortletRequest request, AbstractName managerName, AbstractName containerName) { 234 ManagementHelper helper = getManagementHelper(request); 235 WebManager manager = (WebManager) helper.getObject(managerName); 236 return manager.getAccessLog((WebContainer) helper.getObject(containerName)); 237 } 238 239 public static WebContainer getWebContainer(PortletRequest request, AbstractName containerName) { 240 ManagementHelper helper = getManagementHelper(request); 241 return (WebContainer) helper.getObject(containerName); 242 } 243 244 public static WebConnector createWebConnector(PortletRequest request, AbstractName managerName, AbstractName containerName, String name, String protocol, String host, int port) { 245 ManagementHelper helper = getManagementHelper(request); 246 WebManager manager = (WebManager) helper.getObject(managerName); 247 return manager.addConnector((WebContainer) helper.getObject(containerName), name, protocol, host, port); 248 } 249 250 public static WebConnector[] getWebConnectors(PortletRequest request, AbstractName managerName) { 251 ManagementHelper helper = getManagementHelper(request); 252 WebManager manager = (WebManager) helper.getObject(managerName); 253 return (WebConnector[]) manager.getConnectors(); 254 } 255 256 public static WebConnector[] getWebConnectors(PortletRequest request, AbstractName managerName, String protocol) { 257 ManagementHelper helper = getManagementHelper(request); 258 WebManager manager = (WebManager) helper.getObject(managerName); 259 return (WebConnector[]) manager.getConnectors(protocol); 260 } 261 262 public static WebConnector getWebConnector(PortletRequest request, AbstractName connectorName) { 263 ManagementHelper helper = getManagementHelper(request); 264 return (WebConnector) helper.getObject(connectorName); 265 } 266 267 public static WebConnector[] getWebConnectorsForContainer(PortletRequest request, AbstractName managerName, AbstractName containerName, String protocol) { 268 ManagementHelper helper = getManagementHelper(request); 269 WebManager manager = (WebManager) helper.getObject(managerName); 270 return (WebConnector[]) manager.getConnectorsForContainer(containerName, protocol); 271 } 272 273 public static JMSBroker getJMSBroker(PortletRequest request, AbstractName brokerName) { 274 ManagementHelper helper = getManagementHelper(request); 275 return (JMSBroker) helper.getObject(brokerName); 276 } 277 278 public static JMSConnector createJMSConnector(PortletRequest request, JMSManager manager, AbstractName containerName, String name, String protocol, String host, int port) { 279 return manager.addConnector(getJMSBroker(request, containerName), name, protocol, host, port); 280 } 281 282 public static JMSConnector[] getJMSConnectors(PortletRequest request, AbstractName managerName) { 283 ManagementHelper helper = getManagementHelper(request); 284 JMSManager manager = (JMSManager) helper.getObject(managerName); 285 return (JMSConnector[]) manager.getConnectors(); 286 } 287 288 public static JMSConnector[] getJMSConnectors(PortletRequest request, AbstractName managerName, String protocol) { 289 ManagementHelper helper = getManagementHelper(request); 290 JMSManager manager = (JMSManager) helper.getObject(managerName); 291 return (JMSConnector[]) manager.getConnectors(protocol); 292 } 293 294 public static JMSConnector[] getJMSConnectorsForContainer(PortletRequest request, AbstractName managerName, AbstractName brokerName) { 295 ManagementHelper helper = getManagementHelper(request); 296 JMSManager manager = (JMSManager) helper.getObject(managerName); 297 return (JMSConnector[]) manager.getConnectorsForContainer(brokerName); 298 } 299 300 public static JMSConnector[] getJMSConnectorsForContainer(PortletRequest request, AbstractName managerName, AbstractName brokerName, String protocol) { 301 ManagementHelper helper = getManagementHelper(request); 302 JMSManager manager = (JMSManager) helper.getObject(managerName); 303 return (JMSConnector[]) manager.getConnectorsForContainer(brokerName, protocol); 304 } 305 306 public static ResourceAdapter[] getResourceAdapters(PortletRequest request, ResourceAdapterModule module) { 307 ManagementHelper helper = getManagementHelper(request); 308 return helper.getResourceAdapters(module); 309 } 310 311 public static JCAResource[] getJCAResources(PortletRequest request, ResourceAdapter adapter) { 312 ManagementHelper helper = getManagementHelper(request); 313 return helper.getRAResources(adapter); 314 } 315 316 public static String getGBeanDescription(PortletRequest request, AbstractName objectName) { 317 ManagementHelper helper = getManagementHelper(request); 318 return helper.getGBeanDescription(objectName); 319 } 320 321 public static SystemLog getCurrentSystemLog(PortletRequest request) { 322 SystemLog log = (SystemLog) request.getPortletSession(true).getAttribute(SYSTEM_LOG_KEY, PortletSession.APPLICATION_SCOPE); 323 if (log == null) { 324 ManagementHelper helper = getManagementHelper(request); 325 log = helper.getSystemLog(getCurrentJVM(request)); 326 request.getPortletSession().setAttribute(SYSTEM_LOG_KEY, log, PortletSession.APPLICATION_SCOPE); 327 } 328 return log; 329 } 330 331 public static GeronimoManagedBean[] getManagedBeans(PortletRequest request, Class intrface) { 332 ManagementHelper helper = getManagementHelper(request); 333 Object [] obs = helper.findByInterface(intrface); 334 GeronimoManagedBean[] results = new GeronimoManagedBean[obs.length]; 335 for (int i = 0; i < results.length; i++) { 336 results[i] = (GeronimoManagedBean) obs[i]; 337 } 338 return results; 339 } 340 341 public static GeronimoManagedBean getManagedBean(PortletRequest request, AbstractName name) { 342 ManagementHelper helper = getManagementHelper(request); 343 return (GeronimoManagedBean) helper.getObject(name); 344 } 345 346 public static Artifact getConfigurationFor(PortletRequest request, AbstractName objectName) { 347 ManagementHelper helper = getManagementHelper(request); 348 return helper.getConfigurationNameFor(objectName); 349 } 350 351 public static AbstractName getNameFor(PortletRequest request, Object component) { 352 ManagementHelper helper = getManagementHelper(request); 353 return helper.getNameFor(component); 354 } 355 356 public static File getRepositoryEntry(PortletRequest request, String repositoryURI) { 357 J2EEServer server = getCurrentServer(request); 358 Repository[] repos = server.getRepositories(); 359 Artifact uri = Artifact.create(repositoryURI); 360 if (!uri.isResolved()) { 361 Artifact[] all = server.getConfigurationManager().getArtifactResolver().queryArtifacts(uri); 362 if (all.length == 0) { 363 return null; 364 } else { 365 uri = all[all.length - 1]; 366 } 367 } 368 for (int i = 0; i < repos.length; i++) { 369 Repository repo = repos[i]; 370 if (repo.contains(uri)) { 371 return repo.getLocation(uri); 372 } 373 } 374 return null; 375 } 376 377 public static J2EEDeployedObject getModule(PortletRequest request, Artifact configuration) { 378 ManagementHelper helper = getManagementHelper(request); 379 return helper.getModuleForConfiguration(configuration); 380 } 381 382 public static ConfigurationData[] getConfigurations(PortletRequest request, ConfigurationModuleType type, boolean includeChildModules) { 383 ManagementHelper helper = getManagementHelper(request); 384 return helper.getConfigurations(type, includeChildModules); 385 } 386 387 public static Object [] getGBeansImplementing(PortletRequest request, Class iface) { 388 ManagementHelper helper = getManagementHelper(request); 389 return helper.getGBeansImplementing(iface); 390 } 391 392 399 public static void addGBeanToConfiguration(PortletRequest request, Artifact configID, GBeanData gbean, boolean start) { 400 ManagementHelper helper = getManagementHelper(request); 401 helper.addGBeanToConfiguration(configID, gbean, start); 402 } 403 404 409 public static String getConsoleFrameworkServletPath(HttpServletRequest request) { 410 String contextPath; 411 Object response = request.getAttribute("javax.portlet.response"); 412 if (response != null && response instanceof RenderResponse) { String pathInfo = request.getPathInfo(); 414 String portletPath = Pattern.compile("/").split(pathInfo)[1]; 415 contextPath = ((RenderResponse) response).createRenderURL().toString(); 416 contextPath = Pattern.compile("/" + portletPath).split(contextPath)[0]; 417 } else { contextPath = request.getContextPath(); 419 } 420 return contextPath; 421 } 422 } 423 | Popular Tags |