【发布时间】:2011-10-11 13:48:08
【问题描述】:
我有一个具有以下结构的应用程序
$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。即使使用了多个war文件,我仍想通过相同的上下文访问应用程序,即http://0.0.0.0/myapp。
使用这种方法,我将能够只交付受更改影响的模块。这有可能吗?
我不介意在部署每个 war 文件后必须重新启动容器。
【问题讨论】:
-
AFAIK 这是不可能的,因为每个 Web 应用程序都需要自己的上下文。但是,您可以使用 url 重写将
/myapp/articles/xxx映射到/articles/xxx或类似的东西。 -
在开发环境中,您可以将应用程序部署为目录(而不是 WAR 文件)。在这种情况下,您只需要分发更改的文件。
-
顺便说一句,您还可以将应用程序部署为文件夹并创建 jars 来包含您的类文件。这样你就只有一堆 jars 在 WEB-INF/lib 和你的 JSP、CSS 等。
-
是的,可以选择将每个模块部署为文件夹,将类文件部署为 jar 文件,但我更喜欢存档方法。如果无法使用某种存档方法,我可能会选择文件夹选项。
-
最重要的是,如果没有实现逻辑来处理不同 war 文件之间的会话数据,我就无法拆分模块。 :)
标签: java jsp jakarta-ee tomcat