在 Glassfish 4.1 上使用 JNDI 设置项目阶段
Set Project Stage with JNDI on Glassfish 4.1
我正在寻找使用 JNDI 配置在 Glassfish(v4.1.1 build 1)上设置项目阶段,以允许我的服务器拥有每个不同的项目阶段,并允许我使用 Git 推送修改而无需每次推送时将 javax.faces.PROJECT_STAGE 更改为 web.xml。
我已经在 this post 中尝试过一些东西,但它似乎不起作用,可能是因为它不是同一个 Glassfish 版本。
in web.xml(在我的项目中)
<resource-ref>
<res-ref-name>jsf/ProjectStage</res-ref-name>
<res-type>java.lang.String</res-type>
<mapped-name>javax.faces.PROJECT_STAGE</mapped-name>
</resource-ref>
in domain.xml(我的服务器使用的域)
<custom-resource factory-class="com.sun.faces.application.ProjectStageJndiFactory" res-type="java.lang.String" jndi-name="javax.faces.PROJECT_STAGE">
<property name="stage" value="Development"></property>
</custom-resource>
我也尝试使用 <property name="value" value="Development"></property>
而不是 name="stage"
。
但是,当我显示 #{facesContext.application.projectStage}
时,它显示为 Production
,因为它看起来是默认阶段。
希望你能帮助我,谢谢!
解决了我的问题!
看来在手动编辑 domain.xml
文件时创建 JNDI 资源并没有像我解释的那样正确创建资源 。
因此它可以与使用 asadmin 命令创建的 JNDI 自定义资源一起正常工作。
JNDI 自定义资源创建命令
create-custom-resource --restype java.lang.String --factoryclass com.sun.faces.application.ProjectStageJndiFactory --property "stage=Development" javax.faces.PROJECT_STAGE
web.xml
<resource-ref>
<res-ref-name>jsf/ProjectStage</res-ref-name>
<res-type>java.lang.String</res-type>
<mapped-name>javax.faces.PROJECT_STAGE</mapped-name>
</resource-ref>
我正在寻找使用 JNDI 配置在 Glassfish(v4.1.1 build 1)上设置项目阶段,以允许我的服务器拥有每个不同的项目阶段,并允许我使用 Git 推送修改而无需每次推送时将 javax.faces.PROJECT_STAGE 更改为 web.xml。
我已经在 this post 中尝试过一些东西,但它似乎不起作用,可能是因为它不是同一个 Glassfish 版本。
in web.xml(在我的项目中)
<resource-ref>
<res-ref-name>jsf/ProjectStage</res-ref-name>
<res-type>java.lang.String</res-type>
<mapped-name>javax.faces.PROJECT_STAGE</mapped-name>
</resource-ref>
in domain.xml(我的服务器使用的域)
<custom-resource factory-class="com.sun.faces.application.ProjectStageJndiFactory" res-type="java.lang.String" jndi-name="javax.faces.PROJECT_STAGE">
<property name="stage" value="Development"></property>
</custom-resource>
我也尝试使用 <property name="value" value="Development"></property>
而不是 name="stage"
。
但是,当我显示 #{facesContext.application.projectStage}
时,它显示为 Production
,因为它看起来是默认阶段。
希望你能帮助我,谢谢!
解决了我的问题!
看来在手动编辑 domain.xml
文件时创建 JNDI 资源并没有像我解释的那样正确创建资源
因此它可以与使用 asadmin 命令创建的 JNDI 自定义资源一起正常工作。
JNDI 自定义资源创建命令
create-custom-resource --restype java.lang.String --factoryclass com.sun.faces.application.ProjectStageJndiFactory --property "stage=Development" javax.faces.PROJECT_STAGE
web.xml
<resource-ref>
<res-ref-name>jsf/ProjectStage</res-ref-name>
<res-type>java.lang.String</res-type>
<mapped-name>javax.faces.PROJECT_STAGE</mapped-name>
</resource-ref>