Pessoal, preciso de ajuda.
No meu projeto, tenho o arquivo persistence.xml, onde tem as informações de acesso ao banco de dados. Preciso que as informações de usuário e senha (conexão com DB) estejam fora deste arquivo, por motivo de segurança dentro da empresa.
Alguém saberia como fazer?
Segue parte do meu persistence.xml
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.h2mddl.auto" value="validate" />
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@//000.000.0.00:0000/car10"/>
<property name="javax.persistence.jdbc.user" value="xxx_xxx"/>
<property name="javax.persistence.jdbc.password" value="yyyyy"/>
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
</properties>
Acho que o melhor caminho a seguir seria obter a conexão indiretamente, por meio de JNDI. Nesse caso você não colocaria as informações de conexão no arquivo, somente o nome JNDI do datasource.
Consegue me passar um exemplo? Estou utilizando Oracle
Obrigado
Oi cara.
Primeiro você tem que entender a idéia da coisa. Essa mudança pode inclusive afetar a estrutura do seu projeto.
Você tem que configurar um datasource (fonte de dados) no seu servidor de aplicação. A lógica é deixar com que o servidor se preocupe em obter conexões do banco, com a sua própria implementação de pool e tudo mais. Até porque, eles costumam fazer isso bem melhor do que o código da gente.
Uma vez que o seu servidor sabe como ir buscar as conexões no banco, a sua aplicação não precisa mais dessa preocupação. A preocupação da aplicação vai passar a ser simplesmente chegar pro servidor e falar “Me da uma conexão de banco ai”, sem nem se preocupar o que servidor faz pra obtê-la. Ai entra então o nome JNDI. O datasource, a fonte de dados criada no servidor de aplicação tem que receber um nome, e é esse nome que sua aplicação vai usar para pedir uma conexão pro servidor.
Um exemplo como ficaria o persistence seria:
[code]<persistence-unit name=“persistencia” transaction-type=“RESOURCE_LOCAL”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:jboss/MyDataSource</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.h2mddl.auto" value="validate" />
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
</properties>
</persistence-unit>[/code]
O nome JNDI do datasource está na linha 4. As informações de conexão do banco serão preocupação do ambiente.
Rodrigo,
muito obrigado pela ajuda.
Abs
Camilo Oscar