Frage

Ich bin neu in OpenJPA.

Ich habe ein Szenario, in dem in Abhängigkeit von dem Server, auf die meine Anwendung ausgeführt wird, muß ich die Einstellungen ändern persistance.xml. Für zB. Wenn es auf Server A ausgeführt wird, dann sollte es anders Datenbank (andere URL), verschiedenes Passwort usw. verwenden und wenn die Anwendung auf Server B ausgeführt wird, dann sollte es unterschiedliche Informationen verwenden.

Und könnten Sie mir auch sagen, in welcher Richtung es getan werden soll, Datenquelle verwenden oder einfach Eigenschaften unter Persistenz-Einheit setzen.

FYI bin ich mit WS-App. Server 7 und RAD 7.5

würde jede Art von Hilfe sehr geschätzt.

War es hilfreich?

Lösung

Sie verwenden einen Anwendungsserver, so dass Sie nicht brauchen, um Datenbankverbindungseinstellungen in der Datei persistence.xml gesetzt. Sie sollten eine JNDI-Datenquelle in Ihrem appserver erstellen können und dann verwenden. Jeder Server konnte die Datenquelle die gleichen JNDI Namen hat und dann dort wird keine Notwendigkeit für persistence.xml Unterschiede geben.

Werkstatt, JPA und Datasources scheint besonders relevant für Sie . Wie funktioniert Rahmen up eine JNDI-Datenquelle in WebSphere 6.0 / 6.1 und WebSphere + JNDI + Spring Framework + Hibernate .

Sind Sie mit Spring? Wenn ja, dann ist das Problem leicht zu lösen: Sie müssen nicht die Datenquelle stellen Informationen in Ihrem persistence.xml, setzen Sie es in Ihrem Anwendungskontext und das wird auf jedem Server unterschiedliche Konfiguration hat

.

Zum Beispiel:

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

und jeder Server eine andere database.properties auf jedem Server-Datei haben könnte (wo jeder in der Classpath ist irgendwo in diesem Beispiel):

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

Ändern persistence.xml zur Laufzeit problematisch sein wird, wie das ist nicht wirklich wie JPA ausgelegt ist.

Natürlich können Sie JNDI Datenquellen mit Feder auch verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top