2010-07-16 155 views
3

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

我想
- 停止旧的应用程序
- 取消部署旧的应用程序
- 部署应用程序(新版本让我们假设我有新的应用程序war文件somewere在更新应用resourcess
如何从运行应用程序在Tomcat上部署Web应用程序

是否有可能从其他应用程序做这样的远程部署在Tomcat都?

+0

你按照什么程序进行部署? 你使用tomcat管理器吗? – 2010-07-16 14:18:27

回答

3

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

添加库到项目“卡塔利娜 - ant.jar文件”,从文件夹中:{} TOMCAT_PATH \ lib中 而在你的项目部署一个战争文件,你只需要做:


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(); 

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

+0

嗨,我得到“java.lang.NoClassDefFoundError:org/apache/tools/ant/Task”。任何想法 ? – leaf 2017-10-01 16:29:34

1

是的。有一组工具(以及.jar)随Tomcat发布,通常由ant使用,但任何愿意调用代码的人都可以使用它。有任务来启动和停止应用程序,部署,取消部署,列出应用程序等;基本上它是一个包装了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。这是真的,但蚂蚁没有任何魔力,只是在jar中调用代码。该代码可以从API后面的其他任何地方调用。

这里有教程编写 Ant任务:http://ant.apache.org/manual/tutorial-writing-tasks.html

不太一样,但它应该给你如何在API的工作的想法。

我看不出为什么你不应该能够从一个servlet中调用这个API,如果你想。

或者,你可以运行在你的Tomcat的manager servlet和简单的访问管理器应用程序,例如Web服务:使用浏览器或Wireshark的窥探你的浏览器和Tomcat之间的通信,当你部署了应用程序,然后重复即远程控制manager。我认为使用工具jar更简单。

+1

感谢您的建议,我找到了解决方案。我发布了另一个答案。 谢谢:) – kospiotr 2010-11-10 12:49:12

0

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

这么说,我想在Maven2和他的 “行家部署” 插件:

  • MVN编译:Java编译
  • MVN包:创作战争文件(用于webbapp项目)的
  • mvn deploy:停止,取消部署旧应用程序,部署并启动新版本!

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

+0

你建议从其他应用程序运行Maven?我想他在这里说网络应用程序。 – 2010-07-16 14:27:03

+0

你是对的......在这种情况下,“maven-deploy”源代码(这是公开的)可以是如何在另一个应用程序中实现这个功能的好例子。 – 2010-07-16 14:58:27