如何在 Tomcat 中通过 JNDI 配置 JSF 2.0 应用程序的项目阶段

Posted

技术标签:

【中文标题】如何在 Tomcat 中通过 JNDI 配置 JSF 2.0 应用程序的项目阶段【英文标题】:How to configure JSF 2.0 application's project stage via JNDI in Tomcat 【发布时间】:2011-09-25 09:03:23 【问题描述】:

一直在努力寻找配置 Tomcat 7.0.11 的方法,以便我的 Web 应用程序可以使用 Tomcat 配置中的项目阶段设置。到目前为止 - 没有运气。想法是在 Tomcat 服务器/主机/应用程序范围内设置此属性,而不是在 web.xml 中设置它。有任何想法吗?我正在使用 MyFaces JSF 2 实现 2.0.5。

【问题讨论】:

【参考方案1】:

规范说 JSF 实现在 java:comp/env/jsf/ProjectStage 下使用 JNDI 查找 Project Stage。如果未找到,它将使用 web.xml 中的上下文参数 javax.faces.PROJECT_STAGE。这意味着如果使用 JNDI 在您的 Tomcat 上定义/找到,则首选的值优于 web.xml 设置。

你可以做两件事:

选项 1: 覆盖上下文参数:这意味着使用 Tomcat server.xml 或 context.xml 设置/覆盖上下文参数。你需要把它放在你的 -tag:

<Parameter name="javax.faces.PROJECT_STAGE" value="Production" override="false" />

小心:override="false"这里的意思是这个参数不能被web.xml覆盖(不是相反)!

选项 2: 配置可以使用 JNDI 找到的资源:通过使用它,JSF 实现可以使用 JNDI 查找解决项目阶段。

<Environment name="jsf/ProjectStage" value="Production" type="java.lang.String" override="false"/>

您也可以将其移至 server.xml 中的 标记。在这种情况下,您需要使用 -tag 在您的 -tag 中引用它。

【讨论】:

以上是关于如何在 Tomcat 中通过 JNDI 配置 JSF 2.0 应用程序的项目阶段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用外部化的属性文件在 Tomcat 中执行 JNDI

tomcat + JNDI 数据源的简单示例

tomcat怎么配置JNDI连接

springboot使用JNDI指定数据源配置由外部tomcat配置

JNDI在Tomcat中的配置

怎样配置tomcat的jndi数据库连接?