【发布时间】:2012-05-13 22:11:26
【问题描述】:
我正在使用 Maven 将 Java Web 项目部署到我的 Tomcat 6.0 服务器中。我有一个名为“系统”的项目,它是一场战争,并且有他自己的 JSF 配置和 JSF 托管 bean。
目标是这个系统可以安装一些应用程序,并且应用程序本身也有它们的 web 内容和 JSF 配置。我的问题来了,我有两个选择。
如果我将应用程序编译为 jar 文件,则 faces-config.xml 文件必须存储在项目的 META-INF 文件夹中,因此在加载 jar 时,JSF 可以找到该文件,因为它位于默认位置.但是,我的应用程序也有网络内容,如果我想阅读它,我必须将它存储在主系统 (webapp) 位置。这是一个实用但不优雅的解决方案。
我要做的是将应用程序定义为war文件,并将其包含在主系统POM文件中,我的应用程序中的每个Web内容都将自动发布到服务器中。这是个好主意,但是我可以用我的 faces-config.xml 文件做什么?我的系统中已经定义了一个,当 Maven 尝试部署它时,它发现服务器中已经有一个相同的命名文件。所以我无法从我的系统中获取我的应用 JSF 配置。
有一种方法可以定义多个 jsf-config 文件,使用 web.xml 中的 context-param。类似的东西有效,但我希望它是动态的:
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml, /WEB-INF/faces-managed-beans.xml,/WEB-INF/faces-navigation.xml</param-value>
</context-param>
有人对此有任何想法吗?提前致谢!
【问题讨论】:
-
为什么在 webapp 的
/WEB-INF/lib中将 JSF 模块作为 JAR 文件并不优雅?这正是您的问题的解决方案。 -
因为模块也有网页内容(xhtml 和 css)!每次更改时从 JAR 中提取内容是一个不错的选择吗?我在想最好像战争一样编译它并将两个项目重叠......
-
对不起,我仍然没有看到/理解具体的问题。