[Jboss Seam] Pool de Conexões Dinâmico

7 respostas
JonathanSSantos

Boa tarde pessoal,

Estou com o seguinte problema, tenho uma aplicação utilizando o Jboss Seam. Tenho um problema que é o seguinte:

Preciso criar de maneira dinâmica acesso a diversos bancos, mas eu não tenho idéia por onde começar.

Eu precisaria criar um pool de conexões para minha aplicação, e criar diversas conexões dinamicamente, onde eu iria informar database, ip, port, username, password.

Mas ainda não me passou pela cabeça ainda como fazer, e estou usando JPA (Hibernate), gostaria de não perder as funcionalidades que a JPA oferece, gostaria trabalhar em cima disto.

Alguém teria uma idéia ou botar pelo menos um caminho de linha de raciocínio onde eu possa correr atrás de como implementar.

Valeu a força. :thumbup:

7 Respostas

Christian_Borges

Que tal usar diversas unidades de persitência (PU), como por exemplo

@PersistenceContext( unitName = "pessoa-pu" )
private EntityManager emPessoa;

@PersistenceContext( unitName = "carro-pu" )
private EntityManager emCarros;

No persistence.xml, você define as PUs com seus respectivos data sources.

<?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="pessoa-pu"
		transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/PessoaDataSource</jta-data-source>

		<class>br.com.Pessoa</class>

		<properties>
			<property name="hibernate.hbm2ddl.auto" value="validate" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
		</properties>
	</persistence-unit> 

        <persistence-unit name="carro-pu"
		transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/CarroDataSource</jta-data-source>

		<class>br.com.Carro</class>

		<properties>
			<property name="hibernate.hbm2ddl.auto" value="validate" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
		</properties>
	</persistence-unit> 
</persistence>

Abraços...

JonathanSSantos

Como eu falei…

Não vou ter as definições dos bancos de bandeja.

Vai ser em outro banco de dados. Eu busco essas conexões, acesso ao banco, executo a tarefa de select/insert/delete/update, e fecho a conexão.

Preciso criar isso de maneira dinâmica, e não estática em xml.

Alguém?

JonathanSSantos

Ninguém?! :frowning:

Alexandre_Saudate

Ao invés de usar o EntityManager direto, use o EntityManagerFactory. Na hora de fazer uma criação de EntityManager, você passa um mapa de parâmetros com as configurações novas.

[]´s

JonathanSSantos

asaudate:

Ao invés de usar o EntityManager direto, use o EntityManagerFactory. Na hora de fazer uma criação de EntityManager, você passa um mapa de parâmetros com as configurações novas.

[]´s

O problema é que tu tem que ter configurado um Persistence Unit pra criar um EntityManagerFactory passando parametros.

E eu não teria esses persistence unit configurado.

É Dinâmico.
:thumbup:

JonathanSSantos

Levantando que não consegui achar a solução,

E tendo novas informações para passar, espero que alguém possar tentar voltar a me ajudar.

Hehehe

Digamos que teria configurado uns 100 DTSOURCE. Com conexões de diversos bancos.

Como eu poderia digamos usar a entidade Car:
@Entity()
public class Car {
}
E sua respectiva Home e list
@Name("carHome") {
public class CarHome extends BaseHome<Car>{
}

@Name("carList")
public class CarList extends BaseQuery<Car>{
}

Como fazer com que hora o Home/List use o Dtsource x e hora use o Dtsource y?

Alguém teria uma idéia?

Valeu :thumbup:

J

Olá,
conseguiu chegar a uma conclusão sobre o pool dinamico?
Terei um cenario bem parecido com o seu…
Obrigado.

Criado 11 de agosto de 2010
Ultima resposta 1 de ago. de 2011
Respostas 7
Participantes 4