[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
NEO + TOMCAT (Multiplos DataSources)  XML
Índice dos Fóruns -> Dúvidas
Autor Mensagem
ninjasauro
Equipe

Membro desde: 19/08/2008 16:45:23
Mensagens: 7
Offline

E aee galera do NEoO... to tentando sem sucesso rodar uma aplicação usando o NEO com tomcat 5.5. Não to conseguindo fazer a conexão com o banco. O banco é o PostgreSql. Com o Jboss eu consegui normal configurando o arquivo connection.property mas no tomcat nao deu certo. O que preciso configurar?
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Qual o erro que está dando?

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
ninjasauro
Equipe

Membro desde: 19/08/2008 16:45:23
Mensagens: 7
Offline

tá dando um erro assim:

Could not load JDBC driver class [org.postgresql.Driver]

a conexao tá assim:

driver=org.postgresql.Driver
url=jdbc:postgresql://localhost/postgres
username=postgres
password=1234

é assim mesmo o correto?

tem como configurar com o jndi tb?
Igor.Costa
MultiAction
[Avatar]
Membro desde: 22/06/2007 15:13:22
Mensagens: 79
Localização: Vitória da Conquista - BA
Offline

Vc está com o jar do Postgre dentro da pasta lib?

Para configurar com JNDI:
Code:
 <Context
 			reloadable="true"
 			debug="0"
 			docBase="D:\Mastersoft/Sistemas/zzzzz"
 			path="/zzzzz">
 
 		  <Resource name="jdbc/jndizzzzzz"
               auth="Container"
               scope="Shareable"
               type="javax.sql.DataSource"
               maxActive="50"
               maxIdle="30"
               maxWait="2000"
               username="postgres"
               password="senha"
               removeAbandoned="true"
               removeAbandonedTimeout="60"
               logAbandoned="true"
               driverClassName="org.postgresql.Driver"
               url="jdbc:postgresql://localhost:5432/database?charset=latin1"/>
          </Context>
 
 

Igor Costa

MasterSoft Sistemas Ltda.


[Email] [WWW] [Yahoo!] [MSN]
ninjasauro
Equipe

Membro desde: 19/08/2008 16:45:23
Mensagens: 7
Offline

Coloquei o jar na pasta lib da aplicação e deu certo....
e o jndi criei o contexto no arquivo context.xml tb deu certo...
mas uma coisa ainda não entendi...
da pra fazer o jndi com mais de uma conexao? ???

tava querendo acessar da mesma aplicação dois bancos diferentes.....
é muito complicado???

vlw pela ajuda galera
Igor.Costa
MultiAction
[Avatar]
Membro desde: 22/06/2007 15:13:22
Mensagens: 79
Localização: Vitória da Conquista - BA
Offline

Não sei se tem alguma diferença, mas pra testar tenta colocar esse código no server.xml...

Isso aqui também pode ajudar:

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Resource%20Definitions

Igor Costa

MasterSoft Sistemas Ltda.


[Email] [WWW] [Yahoo!] [MSN]
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

ninja respondendo a sua pergunta sobre dois datasources....


Dá pra colocar quantos datasources vc quiser na sua aplicacao, e existem duas formas de fazer isso:

definir os dataSources no applicationConfig.xml, esse caso te dará mais poder MAS te dará mais trabalho uma vez que vc terá que configurar os datasources de todos os daos um por um, indicando qual é o certo

A outra forma que é a que geralmente eu utilizo é a seguinte:
Utilizar um datasource através do connection.properties normal
O outro datasource criar na mão dentro de um código java, o configurar os beans para os novos dataSources
(geralmente as aplicações que necessitam de 2 datasources, sempre tem um datasource menos utilizado, a solucao manual ficaria para ele)

crie uma classe qualquer q implemente InitializingBean

Code:
 @Bean
 public class DatasourceConfig2 implements InitializingBean{
   public void afterPropertiesSet() throws Exception {
     
   }
 }
 


Crie setters para os DAOs que deseja utilizar o dataSource2:

Code:
 
 @Bean
 public class DatasourceConfig2 implements InitializingBean{
 
   SiteDAO siteDAO; // a injecao de dependecia irá configurar esse obj
   public void setSiteDAO(SiteDAO siteDAO) {
         this.siteDAO = siteDAO;
   }
   public void afterPropertiesSet() throws Exception {
     
   }
 }
 
 


Crie os objetos DataSource, JdbcTemplate, SessionFactory, HibernateTemplate, TransactionTemplate (esses sao todos os objetos necessários para o DAO, talvez vc nem precise de todos...)

e configure o seu bean com esses objetos

Code:
 @Bean
 public class DatasourceConfig2 implements InitializingBean{
 
   SiteDAO siteDAO; // a injecao de dependecia irá configurar esse obj
   public void setSiteDAO(SiteDAO siteDAO) {
         this.siteDAO = siteDAO;
   }
   public void afterPropertiesSet() throws Exception {
         DriverManagerDataSource legacyDataSource = createLegacyDataSource();
         JdbcTemplate legacyJdbcTemplate = createLegacyJdbcTemplate(legacyDataSource);
         SessionFactory legacySessionFactory = createLegacySessionFactory(legacyDataSource);
         HibernateTemplate legacyHibernateTemplate = createLegacyHibernateTemplate(legacySessionFactory);
         TransactionTemplate legacyTransactionTemplate = createLegacyTransactionTemplate(legacySessionFactory);
 
         siteDAO.setHibernateTemplate(legacyHibernateTemplate);
         siteDAO.setJdbcTemplate(legacyJdbcTemplate);
         siteDAO.setSessionFactory(legacySessionFactory);		        
         siteDAO.setTransactionTemplate(legacyTransactionTemplate);
   }
 }
 


Aqui estou considerando legacy o seu datasource2


A implementacao de cada método seria mais ou menos assim:

Cria o driverManagerDataSource com informacoes do arquivo connection2.properties .. vc pode setar os valores na mao ao inves de ler do arquivo se quiser
Code:
 	private DriverManagerDataSource createLegacyDataSource() {
 		DriverManagerDataSource dataSource = new DriverManagerDataSource();
 		
 		ResourceBundle bundle = null;
 		try {
 			bundle = ResourceBundle.getBundle("connection2");
 		} catch (MissingResourceException e) {
 			// caso nao encontre o bundle nao fazer nada
 		}
 		if (bundle != null) {
 			try {
 				//driver, url, username, password
 				String driver = bundle.getString("driver");
 				String url = bundle.getString("url");
 				String username = null;
 				String password = null;
 				try {
 					username = bundle.getString("username");
 					password = bundle.getString("password");
 				} catch (Exception e) {
 					//o nome de usuário e o password sao opcionais
 				}
 				dataSource.setUrl(url);
 				dataSource.setDriverClassName(driver);
 				dataSource.setUsername(username);
 				dataSource.setPassword(password);
 			} catch (MissingResourceException e) {
 				throw new NeoException("Erro ao carregar informações de connection2.properties. O arquivo está incorreto, " +
 						"faltando algum dos parametros: driver, url");
 			} 
 		}
 		return dataSource;
 	}
 


Code:
	
 private JdbcTemplate createLegacyJdbcTemplate(DataSource dataSource) {
 		JdbcTemplate legacyJdbcTemplate = new JdbcTemplate(dataSource);
 		this.legacyJdbcTemplate = legacyJdbcTemplate;
 		legacyJdbcTemplate.afterPropertiesSet();
 		return legacyJdbcTemplate;
 	}
 


Code:
 	private SessionFactory createLegacySessionFactory(DriverManagerDataSource legacyDataSource) {
 		AnnotationConfiguration annotationConfiguration = createLegacyAnnotationConfiguration(legacyDataSource);
 		SessionFactory legacySessionFactory = annotationConfiguration.buildSessionFactory();
 		return legacySessionFactory;
 	}
 


Code:
 	private AnnotationConfiguration createLegacyAnnotationConfiguration(DriverManagerDataSource legacyDataSource) {
 		AnnotationConfiguration annotationConfiguration = new AnnotationConfiguration();
 		//adicione todas as classes q devem vir do datasource2
 		annotationConfiguration.addAnnotatedClass(Site.class);
 
 
 		annotationConfiguration.setProperty(Environment.DRIVER, legacyDataSource.getDriverClassName());
 		annotationConfiguration.setProperty(Environment.URL, legacyDataSource.getUrl());
 		annotationConfiguration.setProperty(Environment.USER, legacyDataSource.getUsername());
 		annotationConfiguration.setProperty(Environment.PASS, legacyDataSource.getPassword());
 		
 		annotationConfiguration.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "false");
 		
 		annotationConfiguration.setProperty(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect");
 		annotationConfiguration.setProperty(Environment.SHOW_SQL, "true");
 		return annotationConfiguration;
 	}
 


Code:
 	private HibernateTemplate createLegacyHibernateTemplate(SessionFactory legacySessionFactory) {
 		HibernateTemplate legacyHibernateTemplate = new HibernateTemplate(legacySessionFactory);
 		legacyHibernateTemplate.afterPropertiesSet();
 		return legacyHibernateTemplate;
 	}
 



Code:
 	private TransactionTemplate createLegacyTransactionTemplate(SessionFactory legacySessionFactory) {
 		TransactionTemplate legacyTransactionTemplate = new TransactionTemplate(new HibernateTransactionManager(legacySessionFactory));
 		return legacyTransactionTemplate;
 	}
 


Esse exemplo serve em diversas ocasioes onde se desejar configurar o hibernate, datasource ou qualquer item do banco de dados. Lembrando que isso pode ser configurado também através do xml applicationconfig.xml

Outra vantagem é que se remover o @Bean da classe os daos voltam altomaticamente a usar o datasource1
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Na hora de importar as classes do spring sempre utilize as classes do pacote org.spring.....hibernate3....
fabricio.costa
Equipe
[Avatar]

Membro desde: 01/01/2009 15:42:58
Mensagens: 6
Localização: Vitória da conquista, BA
Offline

Vou aproveitar ese post aqui.

O NEO funciona com o TOMCAT normalmente, ou precisa de alguma configuração extra? Porque eu só vi relatos dele com o JBoss.

Fabrício Costa
Programador WEB
Vitória da Conquista-BA
[Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Normalmente. No início do post o igor ensina a utilizar ele no tomcat.

até!

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Dúvidas
Ir para:   
Powered by JForum 2.1.7 © JForum Team