You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/04/21 10:51:32 UTC

[tomcat] branch 9.0.x updated: Fix saving of context.xml file from Manager app

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new 22c0ead  Fix saving of context.xml file from Manager app
22c0ead is described below

commit 22c0ead83368f206d07c7cdf0170d29073ceb4aa
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Apr 21 11:50:51 2020 +0100

    Fix saving of context.xml file from Manager app
---
 .../catalina/manager/LocalStrings.properties       |  1 +
 .../apache/catalina/manager/ManagerServlet.java    | 11 +++++---
 .../apache/catalina/storeconfig/StoreConfig.java   | 31 +++++++++-------------
 .../catalina/storeconfig/mbeans-descriptors.xml    |  2 +-
 webapps/docs/changelog.xml                         |  8 ++++++
 5 files changed, 30 insertions(+), 23 deletions(-)

diff --git a/java/org/apache/catalina/manager/LocalStrings.properties b/java/org/apache/catalina/manager/LocalStrings.properties
index 001e73b..96f28d3 100644
--- a/java/org/apache/catalina/manager/LocalStrings.properties
+++ b/java/org/apache/catalina/manager/LocalStrings.properties
@@ -165,6 +165,7 @@ managerServlet.resourcesType=OK - Listed global resources of type [{0}]
 managerServlet.saveFail=FAIL - Configuration save failed: [{0}]
 managerServlet.saved=OK - Server configuration saved
 managerServlet.savedContext=OK - Context [{0}] configuration saved
+managerServlet.savedContextFail=FAIL - Context [{0}] configuration save failed
 managerServlet.serverInfo=OK - Server info\n\
 Tomcat Version: [{0}]\n\
 OS Name: [{1}]\n\
diff --git a/java/org/apache/catalina/manager/ManagerServlet.java b/java/org/apache/catalina/manager/ManagerServlet.java
index 1e3c7b4..3606c4c 100644
--- a/java/org/apache/catalina/manager/ManagerServlet.java
+++ b/java/org/apache/catalina/manager/ManagerServlet.java
@@ -710,11 +710,14 @@ public class ManagerServlet extends HttpServlet implements ContainerServlet {
                 return;
             }
             try {
-                mBeanServer.invoke(storeConfigOname, "store",
+                Boolean result = (Boolean) mBeanServer.invoke(storeConfigOname, "store",
                         new Object[] {context},
-                        new String [] { "java.lang.String"});
-                writer.println(smClient.getString("managerServlet.savedContext",
-                        path));
+                        new String [] { "org.apache.catalina.Context"});
+                if (result.booleanValue()) {
+                    writer.println(smClient.getString("managerServlet.savedContext", path));
+                } else {
+                    writer.println(smClient.getString("managerServlet.savedContextFail", path));
+                }
             } catch (Exception e) {
                 log(sm.getString("managerServlet.error.storeContextConfig", path), e);
                 writer.println(smClient.getString("managerServlet.exception",
diff --git a/java/org/apache/catalina/storeconfig/StoreConfig.java b/java/org/apache/catalina/storeconfig/StoreConfig.java
index 8708fe9..3d3cba1 100644
--- a/java/org/apache/catalina/storeconfig/StoreConfig.java
+++ b/java/org/apache/catalina/storeconfig/StoreConfig.java
@@ -241,26 +241,21 @@ public class StoreConfig implements IStoreConfig {
      */
     @Override
     public synchronized boolean store(Context aContext) {
-        URL configFile = aContext.getConfigFile();
-        if (configFile != null) {
-            try {
-                StoreDescription desc = null;
-                desc = getRegistry().findDescription(aContext.getClass());
-                if (desc != null) {
-                    boolean old = desc.isStoreSeparate();
-                    try {
-                        desc.setStoreSeparate(true);
-                        desc.getStoreFactory().store(null, -2, aContext);
-                    } finally {
-                        desc.setStoreSeparate(old);
-                    }
+        try {
+            StoreDescription desc = null;
+            desc = getRegistry().findDescription(aContext.getClass());
+            if (desc != null) {
+                boolean old = desc.isStoreSeparate();
+                try {
+                    desc.setStoreSeparate(true);
+                    desc.getStoreFactory().store(null, -2, aContext);
+                } finally {
+                    desc.setStoreSeparate(old);
                 }
-                return true;
-            } catch (Exception e) {
-                log.error(sm.getString("config.storeContextError", aContext.getName()), e);
             }
-        } else {
-            log.error(sm.getString("config.missingContextFile", aContext.getPath()));
+            return true;
+        } catch (Exception e) {
+            log.error(sm.getString("config.storeContextError", aContext.getName()), e);
         }
         return false;
     }
diff --git a/java/org/apache/catalina/storeconfig/mbeans-descriptors.xml b/java/org/apache/catalina/storeconfig/mbeans-descriptors.xml
index bec2fc2..f0f402d 100644
--- a/java/org/apache/catalina/storeconfig/mbeans-descriptors.xml
+++ b/java/org/apache/catalina/storeconfig/mbeans-descriptors.xml
@@ -70,7 +70,7 @@
                impact="ACTION" returnType="void" >
           <parameter name="context"
                  description="Context"
-                 type="org.apache.catalina.context"/>
+                 type="org.apache.catalina.Context"/>
     </operation>
     <operation name="store"
                description="Store Host"
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 49c8606..4f884b8 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -89,6 +89,14 @@
       </update>
     </changelog>
   </subsection>
+  <subseciton name="Web applications">
+    <changelog>
+      <fix>
+        Fix the saving of a Context configuration file via the scripting
+        interface of the Manager web application. (markt)
+      </fix>
+    </changelog>
+  </subseciton>
   <subsection name="Other">
     <changelog>
       <update>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org