Pergunta

Eu sou novo para OpenJPA.

Eu tenho um cenário onde, dependendo do servidor onde meu aplicativo é executado, eu preciso mudar as configurações para persistance.xml. Para, por exemplo. se a sua execução no servidor A, então deve usar banco de dados diferente (url diferente), senha diferente etc e se o aplicativo está sendo executado no servidor B, em seguida, ele deve usar informações diferentes.

E você poderia também dizer-me, qual o caminho que deve ser feito, usando fonte de dados ou simplesmente colocando propriedades sob persistence-unit.

FYI Eu estou usando aplicativo WS. servidor 7 e RAD 7.5

Qualquer tipo de ajuda seria muito apreciada.

Foi útil?

Solução

Você está usando um servidor de aplicativos para que você não precisa de configurações de conexão de banco de dados definida no arquivo persistence.xml. Você deve ser capaz de criar uma fonte de dados JNDI no seu appserver e depois usar isso. Cada servidor pode ter a fonte de dados têm o mesmo nome JNDI e, em seguida, não haverá necessidade de quaisquer diferenças persistence.xml.

Oficina, JPA e DataSources parece particularmente relevante para você . Como faz Configuração -se uma fonte de dados JNDI no WebSphere 6.0 / 6.1 e WebSphere + JNDI + Spring Framework + Hibernate .

Você está usando Spring? Se assim for, então o problema é fácil de resolver:. Você não colocar as informações da fonte de dados em sua persistence.xml, você colocá-lo em seu contexto de aplicação e que vai ter configuração diferente em cada servidor

Por exemplo:

<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 cada servidor pode ter um arquivo database.properties diferente em cada servidor (onde cada um é no lugar classpath neste exemplo):

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

Alterar persistence.xml em tempo de execução vai ser problemático, pois isso não é realmente como JPA é projetado.

É claro, você pode usar fontes de dados JNDI com Spring também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top