如何在Glassfish 4.1中设置java:comp / env / foo JNDI变量?

时间:2015-06-15 15:37:42

标签: java java-ee glassfish jndi

我想使用ServletFilter从java:comp / env / JNDI命名空间读取配置。由于devel和生产服务器上的值不同,因此不应通过web.xml进行硬编码,而应在应用程序服务器中进行配置。

我已经尝试了以下几个地方,但似乎没有一个是正确的:

如何在Glassfish 4.1中设置自定义JNDI变量?

1 个答案:

答案 0 :(得分:1)

我只安装了Glassfish 4.1网络版。虽然它有JNDI支持,但Web GUI完全没有资源 - > JNDI菜单配置自己的变量!

在Web Profile Glassfish中,可以在domain.xml中编写自定义JNDI变量,它们似乎可以通过Admin GUI进行其他更改:

<resources>
  ...
  <custom-resource res-type="java.lang.String" jndi-name="cas/serverName" factory-class="org.glassfish.resources.custom.factory.PrimitivesAndStringFactory">
    <property name="value" value="https://sso.example.com/"></property>
  </custom-resource>
</resources>
...
<servers>
  <server name="server" config-ref="server-config">
    ...
    <resource-ref ref="cas/serverName"></resource-ref>
  </server>
</servers>

在向Glassfish添加JNDI变量之后,它只能使用InitialContext.doLookup(“cas / serverName”),而不能在java:comp / env命名空间中使用。为此,我不得不将以下内容添加到我的web.xml中(它在glassfish-web.xml中无效!):

 <resource-ref>
   <res-ref-name>cas/serverName</res-ref-name> 
   <res-type>java.lang.String</res-type>
   <lookup-name>cas/serverName</lookup-name> 
 </resource-ref>