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>

Reply via email to