参数化EAR

时间:2010-07-16 06:59:46

标签: java-ee glassfish jndi glassfish-3

我想将一些只读参数(例如,RMI注册表主机和端口)设置为部署在Glassfish服务器上的Java EE应用程序。通常的地方是部署描述符,但我的问题是它被打包在EAR中,因此我无法在不更改EAR的情况下对其进行编辑。

我需要类似于设置JDBC和JMS资源的东西,但更简单。我可以将配置数据放在数据库表中,但这似乎有点过分。我可以使用文件资源适配器,但最好能在Glassfish管理控制台中编辑配置。

有没有标准的方法来做到这一点?当您的应用程序依赖于需要与之通信的外部节点时,如何测试它们?我应该在哪里放置这些参数以及如何访问它们?

我最好的猜测是定义外部JNDI资源,但是我在哪里放置数据?

更新:这就是我的想法:

How can I store Java EE configuration parameters outside of an EAR or WAR?

所以问题是:我如何在 Glassfish

中执行此操作

1 个答案:

答案 0 :(得分:3)

经过几个小时的谷歌搜索,我找到了答案!这不是微不足道的,但幸运的是非常容易。这是:

http://www.mentby.com/glassfish/custom-resource-work-when-looking-it-up-but-not-with-injection.html

在管理控制台上创建自定义资源,并添加名为“value”的属性。像这样:

alt text http://img231.imageshack.us/img231/8237/jndicustomresource.png

然后从EJB访问此名称/值非常简单:

try {
     InitialContext ic = new InitialContext();
     String value = (String) ic.lookup("MyCustomResource");
     System.out.println("MyCustomResource = " + value);
} catch (NamingException e) {
     e.printStackTrace();
}

打印

  

INFO:MyCustomResource = MyCustomResource的一个大拥抱!