Hello,
We are upgrading from Tomcat 6 to tomcat8-8.5.23. We deploy our apps by preparing the fully exploded and configured directory in place under .../webapps/. autoDeploy of apps is false. We never use war files. After the app is staged we use the manager app to deploy it. This involves an HTTP GET call to http://localhost:8080/manager/text/deploy?path=/my-app This is the way we have done it for years on Tomcat 6. We've been attempting for hours to find some combination that yields something other than: AIL - Invalid parameters supplied for command [/deploy] Finally we got this pattern to work: stage the application under /tmp/my-app rather than .../webapps/. Then deploy it like this: http://localhost:8080/manager/text/deploy?war=file:/tmp/my-app/&path=/my-app The critical point is that the war path, when it refers to a directory rather than a war file must end in a trailing slash. This is not in the documentation here: https://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html#Deploy_a_Directory_or_WAR_by_URL Now when we go to undeploy it like so: http://localhost:8080/manager/text/undeploy?path=/my-app Tomcat crashes and exits with this: AIL - Encountered exception [javax.management.InstanceNotFoundException: Catalina:type=Deployer,host=localhost] Rather than spend more hours on this I'm hoping someone can tell me the right technique for undeploying. Thanks. Here's the traceback: 05-Apr-2018 16:49:24.442 INFO [http-nio-8080-exec-1] org.apache.catalina.core.ApplicationContext.log Manager: undeploy:Undeploying web application at '/das-qa-java8' 05-Apr-2018 16:49:24.847 SEVERE [http-nio-8080-exec-1] org.apache.catalina.core.ApplicationContext.log Manager: ManagerServlet.undeploy[/das-qa-java8] javax.management.InstanceNotFoundException: Catalina:type=Deployer,host=localhost at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:816) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.manager.ManagerServlet.removeServiced(ManagerServlet.java:1530) at org.apache.catalina.manager.ManagerServlet.undeploy(ManagerServlet.java:1440) at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:364) at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:595) at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348) at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:52) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) at org.apache.tomcat.util.net.SocketProcessorBase.run<http://org.apache.tomcat.util.net.socketprocessorbase.run/>(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run<http://worker.run/>(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run<http://wrappingrunnable.run/>(TaskThread.java:61) at java.lang.Thread.run<http://java.lang.thread.run/>(Thread.java:748) Apache Tomcat 8 (8.5.29) - Manager App HOW-TO<https://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html#Deploy_a_Directory_or_WAR_by_URL> tomcat.apache.org If you have Tomcat configured to support multiple virtual hosts (websites) you would need to configure a Manager for each. There are three ways to use the Manager web application. -- Daryl Stultz Principal Software Developer _____________________________________ OpenTempo, Inc http://www.opentempo.com<http://www.opentempo.com/> mailto:daryl.stu...@opentempo.com<mailto:daryl.stu...@opentempo.com>