提问者:小点点

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


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

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

  • 系统属性
  • Web容器/常规属性
  • JVM设置/附加属性(在如何在Glassfish 2.1中设置环境变量中建议)
  • 资源连接器(不起作用)
  • asenv. conf(仅在Glassfish 2中?)

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


共1个答案

匿名用户

我只安装了Glassfish 4.1 Web版。虽然它支持JNDI,但WebGUI完全缺乏资源-

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

<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>

将JNDI变量添加到Glassfish后,它仅适用于SinalContext. 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>

相关问题