2010-07-16 152 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