如何在运行应用程序的Tomcat上部署Web应用程序

我想开发更新程序的应用程序。 让我说我有:
– 运行Tomcat
– 在Tomcat上运行Updater App
– 在同一个Tomcat上运行旧版本的应用程序

我想要
– 停止旧的应用程序
– 取消部署旧应用程序
– 部署新版本的应用程序(假设我在Updater app resourcess中有一些新的应用程序战争文件。

是否有可能从另一个应用程序在Tomcat上进行这样的远程部署?

要从另一个应用程序将项目部署到Tomcat服务器,您需要:

从文件夹中添加一个库“catalina-ant.jar”:{TOMCAT_PATH} \ lib在您的项目中部署war文件,您只需执行以下操作:

org.apache.catalina.ant.DeployTask task = new org.apache.catalina.ant.DeployTask(); task.setUrl("http://localhost:8084/manager"); task.setUsername("managerLogin"); task.setPassword("managerPassword"); task.setPath("/UrlToYourDeploadingProject"); task.setWar(new File("c:/Project.war").getAbsolutePath()); task.execute(); 

由于这个解决方案,我能够开发可以自动更新我的应用程序的项目。

是。 有一组与Tomcat一起发布的工具(好吧,一个.jar)通常由ant使用,但任何愿意调用代码的人都可以使用它。 有启动和停止应用程序,部署,取消部署,列出应用程序等任务; 本质上它是一个包装manager servletfunction的API。

有一刻我试图为你挖出名字或链接……

这是关于这些东西的Apache的信息: http : //tomcat.apache.org/tomcat-5.5-doc/manager-howto.html#Executing Manager命令与Ant

……以及其他地方的用户,详细描述了他如何使用这些任务: http : //raibledesigns.com/wiki/Wiki.jsp? page = TomcatAntTasks

你可能会反对说你不是ant 。 这是真的,但是没有什么关于ant的魔力,它只是在jar中调用代码。 可以从API后面的任何其他地方调用该代码。

这是关于编写 ant任务的教程: http : //ant.apache.org/manual/tutorial-writing-tasks.html

不完全相同,但它应该让您了解API的工作原理。

我认为如果你愿意,你没有理由不能在servlet中调用这个API。

或者,您可以在Tomcat中运行manager servlet,只需像Web服务一样访问管理器应用程序:使用浏览器或WireShark在部署应用程序时窥探浏览器和Tomcat之间的流量,然后将其复制到远程控制manager 。 我,我认为使用工具jar更简单。

如果使用“项目生命周期”工具,则可以在开发周期中自动化此取消部署/部署。

说到这里,我想起了Maven2和他的“maven-deploy”插件:

  • mvn编译:java编译
  • mvn包:创建war文件(用于webbapp项目)
  • mvn deploy:停止,取消部署旧应用程序,部署并启动新版本!

之后,您可以将此自动化与连续集成服务器(如Hudson)结合起来。