amyroh 2003/03/11 06:12:48
Modified: catalina/src/share/org/apache/catalina/mbeans
MBeanFactory.java
Log:
Update create/remove/edit for context, logger, realm, and valve to
support the new jsr77 name for context.
Revision Changes Path
1.42 +168 -233
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java
Index: MBeanFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- MBeanFactory.java 11 Mar 2003 03:25:52 -0000 1.41
+++ MBeanFactory.java 11 Mar 2003 14:12:47 -0000 1.42
@@ -184,6 +184,129 @@
/**
+ * Add Logger.
+ *
+ * @logger logger to be added
+ * @parent parent object name
+ * @host hostname object name for context logger
+ *
+ * @exception Exception if an MBean cannot be created or registered
+ */
+ private void addLogger(Logger logger, String parent, String hostname)
+ throws Exception {
+
+ // Add the new instance to its parent component
+ ObjectName pname = new ObjectName(parent);
+ String type = pname.getKeyProperty("type");
+ Server server = ServerFactory.getServer();
+ if (type == null) {
+ ObjectName hname = new ObjectName(hostname);
+ String serviceName = hname.getKeyProperty("service");
+ Service service = server.findService(serviceName);
+ Engine engine = (Engine) service.getContainer();
+ Host host = (Host) engine.findChild(hname.getKeyProperty("host"));
+ String name = pname.getKeyProperty("name");
+ String path = name.substring(name.lastIndexOf('/'));
+ String pathStr = getPathStr(path);
+ Context context = (Context) host.findChild(pathStr);
+ context.setLogger(logger);
+ } else {
+ String serviceName = pname.getKeyProperty("service");
+ Service service = server.findService(serviceName);
+ Engine engine = (Engine) service.getContainer();
+ if (type.equals("Engine")) {
+ engine.setLogger(logger);
+ } else if (type.equals("Host")) {
+ Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
+ host.setLogger(logger);
+ }
+ }
+ }
+
+
+ /**
+ * Add Realm.
+ *
+ * @logger realm to be added
+ * @parent parent object name
+ * @host hostname object name for context realm
+ *
+ * @exception Exception if an MBean cannot be created or registered
+ */
+ private void addRealm(Realm realm, String parent, String hostname)
+ throws Exception {
+
+ // Add the new instance to its parent component
+ ObjectName pname = new ObjectName(parent);
+ String type = pname.getKeyProperty("type");
+ Server server = ServerFactory.getServer();
+ if (type == null) {
+ ObjectName hname = new ObjectName(hostname);
+ String serviceName = hname.getKeyProperty("service");
+ Service service = server.findService(serviceName);
+ Engine engine = (Engine) service.getContainer();
+ Host host = (Host) engine.findChild(hname.getKeyProperty("host"));
+ String name = pname.getKeyProperty("name");
+ String path = name.substring(name.lastIndexOf('/'));
+ String pathStr = getPathStr(path);
+ Context context = (Context) host.findChild(pathStr);
+ context.setRealm(realm);
+ } else {
+ String serviceName = pname.getKeyProperty("service");
+ Service service = server.findService(serviceName);
+ Engine engine = (Engine) service.getContainer();
+ if (type.equals("Engine")) {
+ engine.setRealm(realm);
+ } else if (type.equals("Host")) {
+ Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
+ host.setRealm(realm);
+ }
+ }
+ }
+
+
+ /**
+ * Add Valve.
+ *
+ * @valve valve to be added
+ * @parent parent object name
+ * @host hostname object name for context realm
+ *
+ * @exception Exception if an MBean cannot be created or registered
+ */
+ private void addValve(Valve valve, String parent, String hostname)
+ throws Exception {
+
+ // Add the new instance to its parent component
+ ObjectName pname = new ObjectName(parent);
+ String type = pname.getKeyProperty("type");
+ Server server = ServerFactory.getServer();
+ if (type == null) {
+ ObjectName hname = new ObjectName(hostname);
+ String serviceName = hname.getKeyProperty("service");
+ Service service = server.findService(serviceName);
+ Engine engine = (Engine) service.getContainer();
+ Host host = (Host) engine.findChild(hname.getKeyProperty("host"));
+ String name = pname.getKeyProperty("name");
+ String path = name.substring(name.lastIndexOf('/'));
+ String pathStr = getPathStr(path);
+ Context context = (Context) host.findChild(pathStr);
+ ((StandardContext)context).addValve(valve);
+ } else {
+ String serviceName = pname.getKeyProperty("service");
+ Service service = server.findService(serviceName);
+ Engine engine = (Engine) service.getContainer();
+ if (type.equals("Engine")) {
+ ((StandardEngine)engine).addValve(valve);
+ } else if (type.equals("Host")) {
+ Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
+ ((StandardHost)host).addValve(valve);
+ }
+ }
+ }
+
+
+ /**
* Little convenience method to remove redundant code
* when retrieving the path string
*
@@ -205,30 +328,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createAccessLoggerValve(String parent)
+ public String createAccessLoggerValve(String parent, String host)
throws Exception {
// Create a new AccessLogValve instance
AccessLogValve accessLogger = new AccessLogValve();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- ((StandardContext)context).addValve(accessLogger);
- } else if (type.equals("Engine")) {
- ((StandardEngine)engine).addValve(accessLogger);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- ((StandardHost)host).addValve(accessLogger);
- }
-
+ addValve(accessLogger, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("AccessLogValve");
ObjectName oname =
@@ -346,33 +453,18 @@
* Create a new FileLogger.
*
* @param parent MBean Name of the associated parent component
+ * @host host object name for context logger
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createFileLogger(String parent)
+ public String createFileLogger(String parent, String host)
throws Exception {
// Create a new FileLogger instance
FileLogger fileLogger = new FileLogger();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setLogger(fileLogger);
- } else if (type.equals("Engine")) {
- engine.setLogger(fileLogger);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setLogger(fileLogger);
- }
-
+ addLogger(fileLogger, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("FileLogger");
ObjectName oname =
@@ -535,30 +627,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createJDBCRealm(String parent)
+ public String createJDBCRealm(String parent, String host)
throws Exception {
// Create a new JDBCRealm instance
JDBCRealm realm = new JDBCRealm();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setRealm(realm);
- } else if (type.equals("Engine")) {
- engine.setRealm(realm);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setRealm(realm);
- }
-
+ addRealm(realm, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("JDBCRealm");
ObjectName oname =
@@ -575,29 +651,13 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createJNDIRealm(String parent)
+ public String createJNDIRealm(String parent, String host)
throws Exception {
// Create a new JNDIRealm instance
JNDIRealm realm = new JNDIRealm();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setRealm(realm);
- } else if (type.equals("Engine")) {
- engine.setRealm(realm);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setRealm(realm);
- }
+ addRealm(realm, parent, host);
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("JNDIRealm");
@@ -606,7 +666,7 @@
return (oname.toString());
}
-
+
/**
* Create a new Memory Realm.
@@ -615,30 +675,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createMemoryRealm(String parent)
+ public String createMemoryRealm(String parent, String host)
throws Exception {
// Create a new MemoryRealm instance
MemoryRealm realm = new MemoryRealm();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setRealm(realm);
- } else if (type.equals("Engine")) {
- engine.setRealm(realm);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setRealm(realm);
- }
-
+ addRealm(realm, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("MemoryRealm");
ObjectName oname =
@@ -655,29 +699,13 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createRemoteAddrValve(String parent)
+ public String createRemoteAddrValve(String parent, String host)
throws Exception {
// Create a new RemoteAddrValve instance
RemoteAddrValve valve = new RemoteAddrValve();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- ((StandardContext)context).addValve(valve);
- } else if (type.equals("Engine")) {
- ((StandardEngine)engine).addValve(valve);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- ((StandardHost)host).addValve(valve);
- }
+ addValve(valve, parent, host);
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("RemoteAddrValve");
@@ -695,30 +723,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createRemoteHostValve(String parent)
+ public String createRemoteHostValve(String parent, String host)
throws Exception {
// Create a new RemoteHostValve instance
RemoteHostValve valve = new RemoteHostValve();
-
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- ((StandardContext)context).addValve(valve);
- } else if (type.equals("Engine")) {
- ((StandardEngine)engine).addValve(valve);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- ((StandardHost)host).addValve(valve);
- }
-
+
+ addValve(valve, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("RemoteHostValve");
ObjectName oname =
@@ -735,30 +747,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createRequestDumperValve(String parent)
+ public String createRequestDumperValve(String parent, String host)
throws Exception {
// Create a new RequestDumperValve instance
RequestDumperValve valve = new RequestDumperValve();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- ((StandardContext)context).addValve(valve);
- } else if (type.equals("Engine")) {
- ((StandardEngine)engine).addValve(valve);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- ((StandardHost)host).addValve(valve);
- }
-
+ addValve(valve, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("RequestDumperValve");
ObjectName oname =
@@ -775,30 +771,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createSingleSignOn(String parent)
+ public String createSingleSignOn(String parent, String host)
throws Exception {
// Create a new SingleSignOn instance
SingleSignOn valve = new SingleSignOn();
-
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- ((StandardContext)context).addValve(valve);
- } else if (type.equals("Engine")) {
- ((StandardEngine)engine).addValve(valve);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- ((StandardHost)host).addValve(valve);
- }
-
+
+ addValve(valve, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("SingleSignOn");
ObjectName oname =
@@ -1007,33 +987,18 @@
* Create a new System Error Logger.
*
* @param parent MBean Name of the associated parent component
+ * @host host object name for context logger
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createSystemErrLogger(String parent)
+ public String createSystemErrLogger(String parent, String host)
throws Exception {
// Create a new SystemErrLogger instance
SystemErrLogger logger = new SystemErrLogger();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setLogger(logger);
- } else if (type.equals("Engine")) {
- engine.setLogger(logger);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setLogger(logger);
- }
-
+ addLogger(logger, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("SystemErrLogger");
ObjectName oname =
@@ -1047,33 +1012,18 @@
* Create a new System Output Logger.
*
* @param parent MBean Name of the associated parent component
+ * @host host object name for context logger
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createSystemOutLogger(String parent)
+ public String createSystemOutLogger(String parent, String host)
throws Exception {
// Create a new SystemOutLogger instance
SystemOutLogger logger = new SystemOutLogger();
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setLogger(logger);
- } else if (type.equals("Engine")) {
- engine.setLogger(logger);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setLogger(logger);
- }
-
+ addLogger(logger, parent, host);
+
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("SystemOutLogger");
ObjectName oname =
@@ -1091,29 +1041,14 @@
*
* @exception Exception if an MBean cannot be created or registered
*/
- public String createUserDatabaseRealm(String parent, String resourceName)
- throws Exception {
+ public String createUserDatabaseRealm(String parent, String resourceName,
+ String host) throws Exception {
// Create a new UserDatabaseRealm instance
UserDatabaseRealm realm = new UserDatabaseRealm();
realm.setResourceName(resourceName);
- // Add the new instance to its parent component
- ObjectName pname = new ObjectName(parent);
- String type = pname.getKeyProperty("type");
- Server server = ServerFactory.getServer();
- Service service = server.findService(pname.getKeyProperty("service"));
- Engine engine = (Engine) service.getContainer();
- if (type.equals("Context")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- String pathStr = getPathStr(pname.getKeyProperty("path"));
- Context context = (Context) host.findChild(pathStr);
- context.setRealm(realm);
- } else if (type.equals("Engine")) {
- engine.setRealm(realm);
- } else if (type.equals("Host")) {
- Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
- host.setRealm(realm);
- }
+
+ addRealm(realm, parent, host);
// Return the corresponding MBean name
ManagedBean managed = registry.findManagedBean("UserDatabaseRealm");
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]