Pregunta

Soy nuevo en OpenJPA.

Tengo un escenario en el que, dependiendo del servidor en el que mi aplicación se está ejecutando, tengo que cambiar la configuración de persistance.xml. Para, por ejemplo. si es que se ejecuta en el servidor A, entonces se debe utilizar la base de datos diferente (diferente url), contraseña, etc. diferente y si la aplicación se ejecuta en el servidor B, entonces debe utilizar la información diferente.

Y podría también dime, qué manera se ha de hacer, utilizando la fuente de datos o simplemente poniendo propiedades bajo la persistencia de unidades.

FYI estoy usando WS aplicación. servidor 7 y RAD 7.5

Cualquier tipo de ayuda sería muy apreciada.

¿Fue útil?

Solución

Usted está utilizando un servidor de aplicaciones por lo que no es necesario establecer parámetros de conexión de base de datos en el archivo persistence.xml. Usted debe ser capaz de crear una fuente de datos JNDI en su servidor de aplicaciones y luego usar eso. Cada servidor puede tener la fuente de datos tienen el mismo nombre JNDI y luego no habrá necesidad de que cualquier diferencia persistence.xml.

taller, JPA, y DataSources parece especialmente relevante para usted . Al igual que Ajuste un origen de datos JNDI en WebSphere 6.0 / 6.1 y WebSphere + JNDI + resorte del marco + Hibernate .

¿Está utilizando la primavera? Si es así, entonces el problema es fácil de resolver: usted no pone la información de origen de datos en su persistence.xml, que lo puso en su contexto de aplicación y que tendrá configuración diferente en cada servidor

.

Por ejemplo:

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

y cada servidor podría tener un database.properties diferentes de archivos de cada servidor (donde cada uno está en la ruta de clase en algún lugar en este ejemplo):

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

Cambiar persistence.xml en tiempo de ejecución va a ser problemático, ya que no es realmente cómo está diseñado APP.

Por supuesto, puede utilizar fuentes de datos JNDI con la primavera también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top