Question

Je suis nouveau à OpenJPA.

J'ai un scénario où, selon le serveur sur lequel tourne ma demande, je dois changer les paramètres persistance.xml. Pour exemple. si son fonctionnement sur le serveur A, il doit utiliser la base de données différent (url), mot de passe différent, etc., et si l'application est en cours d'exécution sur le serveur B il devrait utiliser des informations différentes.

Et pourriez-vous dire aussi moi, de quelle manière faut-il faire, en utilisant les propriétés ou source de données mettant simplement sous la persistance unité.

Pour votre information, je suis en utilisant l'application WS. 7 serveur et RAD 7,5

Tout type d'aide serait très appréciée.

Était-ce utile?

La solution

Vous utilisez un serveur d'applications de sorte que vous ne avez pas besoin de définir les paramètres de connexion de base de données dans le fichier persistence.xml. Vous devriez être en mesure de créer une source de données JNDI dans votre serveur d'applications et l'utiliser ensuite. Chaque serveur peut avoir la source de données ont le même nom JNDI et il n'y aura pas besoin de toutes les différences persistence.xml.

Atelier, JPA et DataSources semble particulièrement pertinent pour vous . Tout comme Réglage une source de données JNDI dans WebSphere 6.0 / 6.1 et WebSphere + JNDI + Spring Framework + Hibernate .

Utilisez-vous du printemps? Si oui, alors le problème est facile à résoudre: vous ne mettez pas les informations de source de données dans votre persistence.xml, vous le mettez dans votre contexte d'application et que vous avez la configuration différente sur chaque serveur

.

Par exemple:

<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>

et chaque serveur peut avoir un fichier database.properties différents sur chaque serveur (où chacun est dans le classpath quelque part dans cet exemple):

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

Modification persistence.xml lors de l'exécution va être problématique, car ce n'est pas vraiment comment JPA est conçu.

Bien sûr, vous pouvez utiliser des sources de données JNDI avec le printemps aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top