Conexão usando DataSource

2 respostas
M

Pessoal,

A classe Conexao.java abaixo é de um projeto em JSP no qual estou dando manutenção.

package br.ufpb.nti.historico.persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class Conexao {
	
	protected static DataSource dataSource;
	
	public Conexao() throws Exception {
		if (dataSource == null) {
			try {
				InitialContext ic = new InitialContext();
				dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/myoracle");
			} catch (NamingException ex) {
				System.out.println(ex.getMessage());
				throw ex;
			}
		}
	}
	
	public Connection getConnection() throws SQLException {
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		}
		catch (SQLException e) {
			throw e;
		}
		return conn;
	}
	
	public void closeConnection(
			Connection conn,
			PreparedStatement stmt,
			ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
			}
		}
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
			}
		}	
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
			}
		}
	}		
}

Quando eu baixo o projeto pelo CVS e tento rodá-lo localmente, a classe acima não consegue estabelecer a conexão.
Eu confesso que nunca utilizei conexão em java utilizando o recurso “DataSource”.
Me parece que o trecho

...
InitialContext ic = new InitialContext();
dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/myoracle");
...

de alguma forma depende do servidor de aplicações remoto, de sorte que, tentando rodar localmente, a conexão não funciona.
Se eu não tiver falado nenhuma besteira, alguém poderia comentar alguma coisa sobre esta “dependência” ?
Agradece,

Max Carvalho

2 Respostas

von.juliano

Você entendeu bem, depende de uma configuração no servidor de aplicação, para isso, aqui temos um arquivo chamado oracle-ds.xml que fica na pasta deploy do jboss. Normalmente uso o Spring para gerenciar esse tipo de coisa, então não sei te dar grandes detalhes de como lidar com ele “na mão”, mas acho que esse link parece mostrar bem como funciona.

Flw! :thumbup:

M

Amigo,

Obrigado pela resposta. Para o momento, o que eu queria era só saber mesmo se existe a dependência ou não, pois, na realidade, como aplicação é bem simples, eu já estou criando uma outra classe de conexão que se conecta via JDBC.
Em breve postarei o código dela aqui.
Valeu aí pela ajuda.

Criado 6 de agosto de 2010
Ultima resposta 6 de ago. de 2010
Respostas 2
Participantes 2