Domanda

Sono nuovo di OpenJPA.

Ho uno scenario in cui, a seconda del server in cui la mia applicazione è in esecuzione, ho bisogno di cambiare le impostazioni per persistance.xml. Per per esempio. se in esecuzione sul server A, allora dovrebbe usare database diverso (diverso url), password diversa ecc e se l'applicazione è in esecuzione su server B allora dovrebbe utilizzare informazioni diverse.

E potrebbe dirmi anche, in che modo dovrebbe essere fatto, utilizzando origine dati o semplicemente mettendo le proprietà sotto la persistenza unità.

FYI Sto usando WS app. Server 7 e RAD 7.5

Qualsiasi tipo di aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Si sta utilizzando un server di applicazione in modo da non è necessario configurare le impostazioni di connessione al database nel file persistence.xml. Dovreste essere in grado di creare una fonte di dati JNDI nella vostra appserver e quindi utilizzare tale. Ogni server potrebbe avere la fonte di dati hanno lo stesso nome JNDI e quindi non ci sarà alcuna necessità di eventuali differenze persistence.xml.

Workshop, JPA, e DataSources sembra particolarmente rilevanti per voi . Come fa Impostazione un'origine dati JNDI in WebSphere 6.0 / 6.1 e WebSphere + JNDI + Spring Framework + Hibernate .

Stai usando Primavera? Se è così, allora il problema è di facile soluzione: non mettere le informazioni di origine di dati nel vostro persistence.xml, è mettere in contesto applicativo e che avrete configurazione diversa su ciascun server

.

Ad esempio:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:database.properties"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${database.class}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
</bean>

e ciascun server potrebbe avere un diverso database.properties il file su ogni server (dove ciascuno è nel classpath da qualche parte in questo esempio):

database.username=scratch
database.password=scratch
database.class=oracle.jdbc.OracleDriver
database.url=jdbc:oracle:thin:@localhost:1521:XE

La modifica persistence.xml in fase di esecuzione sta per essere problematico, in quanto questo non è davvero come APP è stato progettato.

Naturalmente, è possibile utilizzare fonti di dati JNDI con la Primavera anche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top