Можно ли разместить пользовательские значения (свойства) в ejb-jar.xml?
1) Мы используем OpenEJB (как встроенный, так и автономный) с несколькими развернутыми EJB. Мы хотели бы указать несколько простых статических бизнес-правил и значений (пример: icon_size=200). Обычно мы помещаем их в обычный файл свойств (пример: rules.properties). Поскольку мы не должны обращаться к файловой системе напрямую, находясь внутри сервера приложений, возможно ли разместить эти пары ключ-значение где-нибудь внутри файла ejb-jar.xml?
2) Если нет, есть ли стандартный механизм для этого? Что это?
Спасибо
3 ответа
Используйте env-entry. В 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; хорошо TernarySearchTree, который читает в.properties и.XML-файлы и позволяет быстрый поиск. Эти файлы доступны на уровне приложения. Однако вы можете в EJB 3 вставить элементы env-entry в ваш EJB. Эта ссылка объясняет это в деталях. Введение в env
Здесь есть некоторые расширения OpenEJB, которые могут быть полезны.
env-entries.properties
Посмотрите пример Custom Injection, который в основном позволяет <env-entry>
быть указано как простые свойства в META-INF/env-entries.properties
файл. Отлично подходит для свертывания всех этих пар имя-значение в простой файл свойств. Внутренне, мы просто генерируем xml для вас, используя эти свойства. Тип по умолчанию всегда java.lang.String, что хорошо для следующей части.
поддержка java.beans.PropertyEditor
любой <env-entry>
который из <env-entry-type>
java.lang.String
автоматически преобразует тип с использованием виртуальной машины java.beans.PropertyEditor
для целевого типа. Это также, как Spring делает преобразование. Есть несколько встроенных преобразователей, таких как @Resource java.util.Date myDate
а также @Resource java.io.File myFile