From 254b9f05e5ed8d9bf329a64a8114bfb8413bda0c Mon Sep 17 00:00:00 2001 From: markt Date: Sun, 24 May 2009 18:39:52 +0000 Subject: [PATCH] Some more ServerFactory removal. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@778207 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/mbeans/MBeanFactory.java | 35 ++++++++++++++++------ .../catalina/mbeans/ServerLifecycleListener.java | 2 ++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/java/org/apache/catalina/mbeans/MBeanFactory.java b/java/org/apache/catalina/mbeans/MBeanFactory.java index 9113279f0..b4f90c4ca 100644 --- a/java/org/apache/catalina/mbeans/MBeanFactory.java +++ b/java/org/apache/catalina/mbeans/MBeanFactory.java @@ -97,11 +97,20 @@ public class MBeanFactory extends BaseModelMBean { // ------------------------------------------------------------- Attributes - + /** + * The container (Server/Service) for which this factory was created. + */ + private Object container; // ------------------------------------------------------------- Operations + /** + * Set the container that this factory was created for. + */ + public void setContainer(Object container) { + this.container = container; + } /** * Return the managed bean definition for the specified bean type @@ -202,17 +211,25 @@ public class MBeanFactory extends BaseModelMBean { private Service getService(ObjectName oname) throws Exception { - String domain = oname.getDomain(); - Server server = ServerFactory.getServer(); - Service[] services = server.findServices(); + if (container instanceof Service) { + // Don't bother checking the domain - this is the only option + return (Service) container; + } + StandardService service = null; - for (int i = 0; i < services.length; i++) { - service = (StandardService) services[i]; - if (domain.equals(service.getObjectName().getDomain())) { - break; + String domain = oname.getDomain(); + if (container instanceof Service) { + Server server = ServerFactory.getServer(); + Service[] services = server.findServices(); + for (int i = 0; i < services.length; i++) { + service = (StandardService) services[i]; + if (domain.equals(service.getObjectName().getDomain())) { + break; + } } } - if (!service.getObjectName().getDomain().equals(domain)) { + if (service == null || + !service.getObjectName().getDomain().equals(domain)) { throw new Exception("Service with the domain is not found"); } return service; diff --git a/java/org/apache/catalina/mbeans/ServerLifecycleListener.java b/java/org/apache/catalina/mbeans/ServerLifecycleListener.java index 64ffcf985..a77c6bc2a 100644 --- a/java/org/apache/catalina/mbeans/ServerLifecycleListener.java +++ b/java/org/apache/catalina/mbeans/ServerLifecycleListener.java @@ -128,12 +128,14 @@ public class ServerLifecycleListener if (lifecycle instanceof Server) { MBeanFactory factory = new MBeanFactory(); + factory.setContainer(lifecycle); createMBeans(factory); createMBeans((Server) lifecycle); } if( lifecycle instanceof Service ) { MBeanFactory factory = new MBeanFactory(); + factory.setContainer(lifecycle); createMBeans(factory); createMBeans((Service)lifecycle); } -- 2.11.0