在Glassfish 4.1上使用JNDI设置Project Stage

时间:2018-01-19 10:47:55

标签: jsf glassfish jndi

我正在寻找使用JNDI配置在Glassfish(v4.1.1 build 1)上设置项目阶段,以允许我的服务器拥有每个,不同的项目阶段,并允许我使用Git推送修改而不更改javax.faces.PROJECT_STAGE在每次推送时都在web.xml中。

我已经尝试了this post中的内容,但似乎它不起作用,可能是因为它与Glassfish版本不同。

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>

在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,因为它看起来是默认阶段。

希望你能帮助我,谢谢!

1 个答案:

答案 0 :(得分:0)

解决了我的问题!

似乎在手动编辑domain.xml文件时创建JNDI资源并不能正确创建资源,如我所解释的here

因此,它可以与使用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>