Ajuda Persistence.createEntityManagerFactory

pessoal tenho o seguinte persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="CaixaNovoPU" transaction-type="RESOURCE_LOCAL"> <provider>oracle.toplink.essentials.PersistenceProvider</provider> <class>br.com.dnasolution.entity.TbCaixa</class> <class>br.com.dnasolution.entity.TbOperacaoPendencia</class> <class>br.com.dnasolution.entity.TbCliente</class> <class>br.com.dnasolution.entity.TbPagamentoMovimentacao</class> <class>br.com.dnasolution.entity.TbFormaPagamento</class> <class>br.com.dnasolution.entity.TbOperacaoConsolidado</class> <class>br.com.dnasolution.entity.TbMovimentacao</class> <class>br.com.dnasolution.entity.TbPendenciaCliente</class> <class>br.com.dnasolution.entity.TbFuncionario</class> <class>br.com.dnasolution.entity.TbValeCaixa</class> <class>br.com.dnasolution.entity.TbConfiguracaoCaixa</class> <properties> <property name="toplink.jdbc.user" value="postgres"/> <property name="toplink.jdbc.password" value="dna44100"/> <property name="toplink.jdbc.url" value="jdbc:postgresql://10.0.0.1:5432/db_dnaso"/> <property name="toplink.jdbc.driver" value="org.postgresql.Driver"/> </properties> </persistence-unit> </persistence>

e chamo ele assim:

emf = Persistence.createEntityManagerFactory("CaixaNovoPU"); return emf.createEntityManager();

porem eu li q o createEntityManagerFactory recebe um Map que seria alguns parametros adicionais e caso esse parametro ja existe… ele sobrescreve o mesmo… porem eu tentei o seguinte:

[code]Properties prop = new Properties();
prop.setProperty(“toplink.jdbc.url”, “jdbc:postgresql://10.0.0.111:5432/db_dnaso”);

    emf = Persistence.createEntityManagerFactory("CaixaNovoPU",prop);
    return emf.createEntityManager();[/code]

e nao deu certo. .eu nao consigo mudar ali o servidor q ele vai buscar o DB… alguem sabe como eu posso fazer isso?? pois o meu persistence.xml esta dentro do meu arquivo .jar, entao qdo iniciar a minha aplicacao eu vou no diretorio do meu .jar e nao consigo mexer em tempo de execucao, logo se eu deixar um arquivo properties fora do meu .jar sempre q iniciar a aplicacao eu busco nele o ip do servidor

segue o texto o createEntityManagerFactory

[quote]public static EntityManagerFactory createEntityManagerFactory(String arg0, Map arg1)
Create and return an EntityManagerFactory for the named persistence unit using the given properties.

Parameters:
persistenceUnitName - The name of the persistence unit
properties - Additional properties to use when creating the factory. The values of these properties override any values that may have been configured elsewhere.
Returns:
The factory that creates EntityManagers configured according to the specified persistence unit.
[/quote]

obrigado

deixa eu ver se eu entendi… vc está querendo que sua aplicação se conecte em mais de um BD e durante a execução vc quer controlar com qual banco vc irá trabalhar naquele momento?

Não cara… eu quero dar a opcao para o usuario selecionar em qual ip esta o DB dele… sempre sera conectado em apenas 1 DB mas ele pode mudar o ip do servidor de uma hora pra outra… e como o meu .xml esta dentro do .jar nao posso mudar somente se for dessa meneira entendeu

Sim Fábio, mas qual foi a bronca que deu?

Ahh, sim, agora saquei o que você quer fazer.
Bom a má notícia é que não dá pra ser feito: esse parâmetro mexe apenas em tudo o que estiver dentro da tag , ou seja, geralmente configurações do vendor; OU SEJA (ufa); hibernate, toplink, etc.
Dá pra fazer, vou verificar! :wink: