2013-02-14 6 views
0

Что было бы правильным способом переопределить свойство EclipseLink persistence.xml при запуске приложения на сервере приложений Glassfish?Override persistence.xml property

Нам нужны некоторые свойства, которые нужно настроить в отдельном файле конфигурации, который будет доступен клиенту.

Я не нашел классов, специфичных для EclipseLink, которые принимают некоторые свойства пользователя. Я только нашел класс Glassfish PersistenceUnitLoader, который можно было бы настроить, чтобы достичь этого. Но это было бы некрасиво хак :)

ответ

3

Вы можете создать свой собственный EntityManager во время выполнения:

Map map = new HashMap(); 

map.put("javax.persistence.jdbc.password", "password"); 
map.put("javax.persistence.jdbc.user", "root"); 

EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPU",map); 
EntityManager em = emf.createEntityManager(map); 

Некоторые EclipseLink имена свойств:

<property name="eclipselink.target-database" value="DERBY"/> 
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 
    <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/> 
    <property name="eclipselink.jdbc.url" value="jdbc:derby://localhost:1527/02DB;create=true"/> 
    <property name="eclipselink.jdbc.user" value="user"/> 
    <property name="eclipselink.jdbc.password" value="password"/> 
+0

Да, но как я уже сказал, я бегу мой app в контейнере, поэтому я добавляю EntityManager вместо его создания. Для Java SE ваш подход будет достаточным, я согласен. Но спасибо за это предложение. – jFrenetic

Смежные вопросы