Предисловие:
Большинство приложений J2EE используют управляемые контейнерами источники данных через JNDI. Это нормально, поскольку он дает одно место для настройки этих соединений.
Проблема возникает, когда мы хотим использовать инфраструктуру ORM (например, спящий режим) или что-то, что должно знать схему по умолчанию (в основном для Oracle, могут быть и другие), которые могут отличаться от имени пользователя, которое используется для подключения к DB.Пользовательский ресурс в JNDI на разных серверах приложений
Я хочу поместить имя схемы по умолчанию где-то рядом с определением источника данных. Одним из вариантов было бы поместить его в JNDI. Затем я буду вручную читать оттуда до построения EntityManager (ну, фактически, используя Spring).
Как я выяснил, есть простой способ определить пользовательский ресурс (в этом случае это будет строка с именем схемы по умолчанию) в Apache Tomcat, как это (поправьте меня, если я ошибаюсь):
<Environment name="schemaNames/EmployeeDB"
type="java.lang.String"
value="empl"
description="Schema name of Employees Database for HR Applications"/>
во всяком случае, учитывая это может быть сделано в Apache Tomcat, как я должен настроить один и тот же пользовательский JNDI ресурс (типа String) в рамках других серверов приложений:
- JBoss 4/5
- WebSphere 6/7
- WebLogic 9/10
Если вы знаете о других серверах, это было бы здорово.
Кроме того, в качестве альтернативы я не хочу указывать имя схемы в системных свойствах или переменных среды.
спасибо!
Обновление:
нашел способ ее достижения на JBoss. Я не тестировал это.
http://forums.java.net/jive/thread.jspa?messageID=316228
Найдена информация для WebLogic, но они говорят о выполнении этого programmaticly, а не с конфигурацией:
http://weblogic-wonders.com/weblogic/2010/06/12/binding-objects-in-weblogic-servers-jndi-tree/
http://forums.oracle.com/forums/thread.jspa?messageID=4397353
Почему вы не хотите использовать переменные среды ('env-entry')? – ewernli
Это именно то, что я пытаюсь сделать, но без редактирования web.xml приложения. –