Создавайте переносимые приложения J2EE, используя имена ресурсов JNDI для пула - PullRequest
0 голосов
/ 20 ноября 2011

Я готовлю веб-приложение J2EE, которое, мы надеемся, должно быть упаковано и продано клиентам в виде файла war. Каждый клиент развернет пакет на своем предпочтительном сервере приложений и будет использовать приложение со своим предпочтительным источником данных.

Мне интересно, как лучше переносить способ определения необходимых сопоставлений с источником данных.

Приложение использует поставщик сохраняемости EclipseLink JPA. Точка входа выглядит примерно так:

@PersistenceContext(unitName = "myPersistenceUnit")
private EntityManager em;

myPersistenceUnit описывается в persistence.xml следующим образом:

  <persistence-unit name="myPersistenceUnit" transaction-type="JTA">
    <jta-data-source>myDataSource</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>

Теперь я предполагаю, что мне нужно каким-то образом сопоставить myDataSource с именем ресурса JNDI сервера приложений, но я теряюсь, как это сделать. Если я использую код, автоматически сгенерированный NetBeans на сервере GlassFish, он создает дескриптор glassfish-resources.xml для этой цели. Этот подход работает, но не переносим на другие серверы приложений и производит дублирование свойств пула соединений (которые уже определены на сервере приложений).

1 Ответ

1 голос
/ 20 ноября 2011

Используйте относительные отображения JNDI и свяжите их в своем файле web.xml.

Вы должны создать запись resource-ref в своем файле web.xml.

В зависимости от сервера приложений будет использоваться запись resource-ref в web.xml. Другим могут потребоваться дополнительные файлы.

Посмотрите примеры здесь для части web.xml.

http://download.oracle.com/docs/cd/E12840_01/wls/docs103/webapp/configureresources.html http://wiki.eclipse.org/Jetty/Howto/Configure_JNDI_Datasource http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

...