单个webapp或上下文的多个war文件

时间:2011-10-11 13:48:09

标签: java jsp java-ee tomcat

我有一个具有以下结构的应用程序

$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文件后重启容器。

1 个答案:

答案 0 :(得分:3)

我不记得你是怎么做的完全是Tomcat,你可能不得不做一些手动配置(在context.xml或类似的东西)但我相当肯定你可以部署你的三个应用程序(。 wars)具有以下上下文路径:

  • myapp.war - > / MyApp的
  • articles.war - > / MyApp的/制品
  • forum.war - > / MyApp的/论坛

我在这里找到了一些特定于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的文件。

或者,您可能希望执行以下操作:

  • myapp.war - > /(通过称之为ROOT.war)
  • articles.war - > /制品
  • forum.war - > /论坛

话虽如此,但请记住,如果这样做,您将无法在没有任何努力的情况下在三个应用程序之间共享状态(会话信息)。例如,如果“forum.war”需要身份验证,则myapp.war或articles.war将无法使用该身份验证信息。