我有一个具有以下结构的应用程序
$TOMCAT_HOME/webapps/myapp
|-css
|-myapp.css
|-js
|-myapp.js
|-forum
|-index.jsp
|-list.jsp
|-users.jsp
|-Articles
|-index.jsp
|-ListArticles.jsp
|-Guestbook
|-viewGuestBook.jsp
|-AddnewEntry.jsp
|-WEB-INF
|-classes
com
|-myapp
|-forum
|-DisplayForum.class
|-ListUsers.class
|-article
|-ArticleList.class
|-AddArticle.class
|-guestbk
|-LoadGuestBook.class
|-ProcessGuestBook.class
应用程序作为war文件(即myapp.war)提供,并部署到$ TOMCAT_HOME / webapps文件夹中。如果任何文件发生更改(jsp,css,js或java文件),我必须始终重建整个war文件。这意味着我在每个版本上部署每个文件。
我想知道是否有办法部署应用程序的特定区域。如果可以将应用程序分成多个war文件,我特别感兴趣。即myapp.war,articles.war和forum.war。我仍然希望通过相同的上下文即http://0.0.0.0/myapp访问应用程序,即使使用了多个war文件。
使用这种方法,我将只能提供受更改影响的模块。这有可能吗?
我不介意在部署每个war文件后重启容器。
答案 0 :(得分:3)
我不记得你是怎么做的完全是Tomcat,你可能不得不做一些手动配置(在context.xml或类似的东西)但我相当肯定你可以部署你的三个应用程序(。 wars)具有以下上下文路径:
我在这里找到了一些特定于Tomcat的信息:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
具体做法是:
在单个文件中(扩展名为“.xml”) $ CATALINA_BASE / conf / [enginename] / [hostname] /目录。的名字 文件(减去.xml扩展名)将用作上下文路径。 可以使用#来定义多级上下文路径,例如, foo #bar.xml for / foo / bar的上下文路径。可以定义默认Web应用程序 使用名为ROOT.xml的文件。
或者,您可能希望执行以下操作:
话虽如此,但请记住,如果这样做,您将无法在没有任何努力的情况下在三个应用程序之间共享状态(会话信息)。例如,如果“forum.war”需要身份验证,则myapp.war或articles.war将无法使用该身份验证信息。