Glassfish 4.1.1 自定义资源上的 JNDI 查找

JNDI lookup on Glassfish 4.1.1 custom resources

我正在尝试使用 JNDI 自定义资源将数据直接存储在我的服务器 (Glassfish) 中,但它显然不起作用。

我将我的 JNDI 定义为下图

对应我的domain.xml.

中的如下描述
<custom-resource factory-class="org.glassfish.resources.custom.factory.PrimitivesAndStringFactory" res-type="java.lang.String" jndi-name="projectStage">
      <property name="value" value="UnitTest"></property>
</custom-resource>

然后,我试图在我的一个托管 bean 中获取这个值。

Context c = new InitialContext();
c.lookup("projectStage");

但是...javax.naming.NamingException: Lookup failed for 'projectStage' 是我从中得到的唯一东西。

如果有人对我有想法,我将不胜感激!

已解决!

我正在手动编辑我的 domain.xml 以添加我的 JNDI 自定义资源,因为 Glassfish 4.1.1 管理界面在单击 New... 时出现运行时错误JNDI 自定义资源部分。

编辑 domain.xml 文件后,它在管理面板中显示良好,但显然无法正常工作。

我已经使用 asadmin 控制台的 create-custom-resource 命令创建了自定义资源解释 here

create-custom-resource --restype java.lang.String --factoryclass org.glassfish.resources.custom.factory.PrimitivesAndStringFactory --property "value=UnitTest" projectStage

然后就可以正常添加到系统中了。 (看起来它不仅存储在 domain.xml 文件中)

我在较旧的 glassfish 版本和 Glassfish 4.1 之间手动传输配置时遇到了类似的问题。

您建议的解决方案确实有效,但如果您有很多属性,则工作量很大。但是通过 asadmin 添加它并比较 domain.xml 我找到了失败的原因。

如果您只是添加 自定义资源 glassfish 将无法找到它。它还需要引用资源。 在我的例子中,它在 部分,需要

<resource-ref ref="projectStage"></resourceRef>