【问题标题】:How can I deploy web app on Tomcat from running app如何从正在运行的应用程序在 Tomcat 上部署 Web 应用程序
【发布时间】:2011-03-16 23:50:27
【问题描述】:

我想开发更新程序。可以说我有:
- 运行 Tomcat
- 在 Tomcat 上运行更新程序应用程序
- 在同一个 Tomcat 上运行旧版本的应用程序

我愿意
- 停止旧应用
- 取消部署旧应用
- 部署新版本的应用程序(假设我在 Updater 应用程序资源中找到了新的应用程序战争文件。

是否可以从另一个应用程序在 Tomcat 上进行这种远程部署?

【问题讨论】:

  • 您遵循什么部署程序?你用tomcat管理器吗?

标签: java deployment tomcat


【解决方案1】:

要将项目从另一个应用程序部署到您的 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();

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

【讨论】:

  • 嗨,我收到“java.lang.NoClassDefFoundError: org/apache/tools/ant/Task”。有什么想法吗?
【解决方案2】:

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

当我试图为你挖掘名字或链接时……

这里是 Apache 关于这些东西的信息:http://tomcat.apache.org/tomcat-5.5-doc/manager-howto.html#Executing 使用 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 更简单。

【讨论】:

  • 感谢您的建议,我找到了解决方案。我在另一个答案中发布了它。谢谢你:)
【解决方案3】:

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

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

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

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

【讨论】:

  • 您是在建议从另一个应用程序运行 Maven?我认为他在这里谈论的是 Web 应用程序。
  • 你是对的......在这种情况下,“maven-deploy”源代码(它是公开的)可以是如何在另一个应用程序中实现此功能的一个很好的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
相关资源
最近更新 更多