1) 我们正在使用带有一些已部署 EJB 的 OpenEJB(嵌入式和独立式)。我们想指定一些简单的静态业务规则和值(例如:icon_size=200)。通常,我们会将它们放在常规属性文件中(例如:rules.properties)。由于我们不应该在应用程序服务器中直接访问文件系统,是否可以将这些键值对放在 ejb-jar.xml 中的某个位置?
2)如果没有,是否有标准机制来做到这一点?它是什么?
谢谢
1) 我们正在使用带有一些已部署 EJB 的 OpenEJB(嵌入式和独立式)。我们想指定一些简单的静态业务规则和值(例如:icon_size=200)。通常,我们会将它们放在常规属性文件中(例如:rules.properties)。由于我们不应该在应用程序服务器中直接访问文件系统,是否可以将这些键值对放在 ejb-jar.xml 中的某个位置?
2)如果没有,是否有标准机制来做到这一点?它是什么?
谢谢
使用环境入口。在 XML 中:
<env-entry>
<env-entry-name>icon_size</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>200</env-entry-value>
</env-entry>
在注释中:
@Resource(name="icon_size")
int icon_size;
我个人只是使用 .properties 文件;以及读取 .properties 和 .XML 文件并允许快速检索的 TernarySearchTree。这些文件在应用程序级别可用。但是,您可以在 EJB 3 中将 env-entry 元素注入您的 EJB。这个链接很好地解释了它的注入 env entry
这里有一些可能有用的 OpenEJB 扩展。
查看自定义注入示例,它基本上允许<env-entry>
在文件中指定为普通属性META-INF/env-entries.properties
。很适合将所有这些名称和值对折叠到一个简单的属性文件中。在内部,我们只是使用这些属性为您生成 xml。默认类型始终为 java.lang.String,这对下一部分很有用。
任何<env-entry>
属于的都将使用目标类型<env-entry-type>
java.lang.String
的 VM 自动转换其类型。java.beans.PropertyEditor
这也是 Spring 进行转换的方式。内置转换器很少,例如@Resource java.util.Date myDate
和@Resource java.io.File myFile