2014-01-09 1 views

ответ

1

Существует еще одна, более простая возможность конфигурирования вашего имени источника данных и других параметров приложения.

Для этого мы используем профили maven и фильтрацию ресурсов. Вам нужно будет определить заполнители в вашем persistence.xml, которые соответствуют именам свойств в вашем файле .properties или в вашем .pom.

Во время сборки вы указываете профиль, и maven заменит заполнители вашими свойствами.

Мы использовали этот метод для переключения источника данных между различными средами развертывания.

EDIT:

Во-первых, определить профиль для фильтрации ресурсов:

<profiles> 
    <profile> 
    <id>set_datasource</id> 
    <build> 
     <!-- enable resource filter to set the datasource name -- 
     <resources> 
      <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     ... 

Создать профиль для каждого источника данных:

<profile> 
     <id>db_test</id> 
    <properties> 
     <database.name>test_ds</database.name> 
    </properties> 
</profile> 

В вашей настойчивости единицы, подготовить заполнитель

<persistence-unit name="my_db"> 
    <jta-data-source>java:jboss/datasources/${datasource.name}</jta-data-source> 
    </persistence-unit> 

Вызов maven с двумя профилями:

mvn test -Pdatasource,db_test 
+0

Можете ли вы добавить пример кода примера, это очень поможет. –

+0

@Sai См. Редактирование, надеюсь, что это поможет. – kostja

1

Вы можете изменить значение в файле persistence.xml путем динамического генерирования EntityManagerFactory с использованием Persistence.createEntityManagerFactory(persistenceUnitName, properties), и используя properties карту, чтобы указать имя источника данных. Однако теперь вы не можете вводить EntityManager с использованием @PersistenceContext или вводить EntityManagerFactory с использованием @PersistenceUnit в любом месте приложения, и вам необходимо вручную управлять транзакциями EntityManager. Не делай этого. Это ужасная идея.

+1

thanks Lane Это поможет. –