Author: markt
Date: Sun Dec 14 17:09:45 2014
New Revision: 1645471
URL: http://svn.apache.org/r1645471
Log:
When using the (currently undocumented) save command, go direct to the
StoreConfig MBean because:
- It removes the dependency on StandardServer.
- It enables the Manager Servlet to detect if the feature is supported or not
and show a useful error message.
Modified:
tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
Modified: tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties?rev=1645471&r1=1645470&r2=1645471&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties Sun
Dec 14 17:09:45 2014
@@ -111,6 +111,8 @@ managerServlet.sslConnectorCiphers=OK -
managerServlet.started=OK - Started application at context path {0}
managerServlet.startFailed=FAIL - Application at context path {0} could not be
started
managerServlet.stopped=OK - Stopped application at context path {0}
+managerServlet.storeConfig.invalidMBean=FAIL - Unable to find the StoreConfig
Mbean. [{0}] is not a valid name for an MBean.
+managerServlet.storeConfig.noMBean=FAIL - No StoreConfig MBean registered at
[{0}]. Registration is typically performed by the StoreConfigLifecycleListener.
managerServlet.threaddump=OK - JVM thread dump
managerServlet.undeployed=OK - Undeployed application at context path {0}
managerServlet.unknownCommand=FAIL - Unknown command {0}
Modified: tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=1645471&r1=1645470&r2=1645471&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java Sun Dec
14 17:09:45 2014
@@ -30,6 +30,7 @@ import java.util.Map;
import java.util.Set;
import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.naming.Binding;
import javax.naming.NamingEnumeration;
@@ -53,7 +54,6 @@ import org.apache.catalina.Session;
import org.apache.catalina.Wrapper;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.StandardHost;
-import org.apache.catalina.core.StandardServer;
import org.apache.catalina.startup.ExpandWar;
import org.apache.catalina.util.ContextName;
import org.apache.catalina.util.RequestUtil;
@@ -575,22 +575,33 @@ public class ManagerServlet extends Http
/**
* Store server configuration.
*
- * @param path Optional context path to save
+ * @param writer Destination for any user message(s) during this
operation
+ * @param path Optional context path to save
+ * @param smClient i18n support for current client's locale
*/
- protected synchronized void save(PrintWriter writer, String path,
- StringManager smClient) {
+ protected synchronized void save(PrintWriter writer, String path,
StringManager smClient) {
- Server server = ((Engine)host.getParent()).getService().getServer();
+ ObjectName storeConfigOname;
+ try {
+ // Note that there is only ever one StoreConfig per JVM and the
+ // name of the MBean is hard-coded.
+ storeConfigOname = new ObjectName("Catalina:type=StoreConfig");
+ } catch (MalformedObjectNameException e) {
+ // Should never happen. The name above is valid.
+ log(sm.getString("managerServlet.exception"), e);
+ writer.println(smClient.getString("managerServlet.exception",
e.toString()));
+ return;
+ }
- if (!(server instanceof StandardServer)) {
- writer.println(smClient.getString("managerServlet.saveFail",
- server));
+ if (!mBeanServer.isRegistered(storeConfigOname)) {
+ writer.println(smClient.getString(
+ "managerServlet.storeConfig.noMBean", storeConfigOname));
return;
}
if ((path == null) || path.length() == 0 || !path.startsWith("/")) {
try {
- ((StandardServer) server).storeConfig();
+ mBeanServer.invoke(storeConfigOname, "storeConfig", null,
null);
writer.println(smClient.getString("managerServlet.saved"));
} catch (Exception e) {
log("managerServlet.storeConfig", e);
@@ -610,7 +621,9 @@ public class ManagerServlet extends Http
return;
}
try {
- ((StandardServer) server).storeContext(context);
+ mBeanServer.invoke(storeConfigOname, "store",
+ new Object[] {context},
+ new String [] { "java.lang.String"});
writer.println(smClient.getString("managerServlet.savedContext",
path));
} catch (Exception e) {
@@ -620,7 +633,6 @@ public class ManagerServlet extends Http
return;
}
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]