Eae galera, queria saber como eu poderia implementar o poll com o banco Oracle 11g
obrigado
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Eae galera, queria saber como eu poderia implementar o poll com o banco Oracle 11g
obrigado
Oi Gabriel, tudo bem ?
Achei isso aqui na documentação do site da Oracle, vê se te ajuda :
Tudo bem matheus e voce ?
então eu ja tinha visto isso cheguei ao seguinte codigo
package br.portalRadex.conexao;
import java.sql.Connection;
import java.sql.SQLException;
import oracle.jdbc.pool.OracleConnectionPoolDataSource;
public class Conexao {
private OracleConnectionPoolDataSource oracleDataSource;
public Conexao() throws SQLException {
oracleDataSource = new OracleConnectionPoolDataSource();
oracleDataSource.setURL("jdbc:oracle:thin:@192.168.0.17:1521:mega");
oracleDataSource.setUser("mega");
oracleDataSource.setPassword("megamega");
}
public static Connection getConnection() throws SQLException, ClassNotFoundException {
return Conexao.getConnection();
}
}
e a classe de teste:
package br.portalRadex.teste;
import java.sql.Connection;
import java.sql.SQLException;
import br.portalRadex.conexao.Conexao;
public class TestaConexao {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Connection con = new Conexao().getConnection();
System.out.println("Conexão aberta com sucesso!!!");
con.close();
}
}
quando executo simplesmente nao acontece nada, percebo pelo gerenciados de tarefas que aJVMassume um processamento bem alto e no console nao aparece erro algum, apenas na aba debugque me apresentado <not responding>.
vou dar outra lida na documentação obrigado
Gabriel, parece que tem algum problema de login/senha/host. Se voce tenta via terminal do sqlplus funciona para esse ip/login/senha? Pois seu codigo esta correto
Paulo acredito que não pois primeiro eu fiz pela forma normal pelo DriveManager:
package br.portalRadex.conexao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conexao {
public static Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.17:1521:mega","mega","megamega");
}
}
e funciona normalmente, ja li e reli a documentação mas nao consigo fazer a conexão.
Quanto a conexão no SqlPlus funciona normalmente user: mega senha: megamega
ip: esta na minha maquina mesmo localhost.
Obrigado pela resposta Paulo.
Gabriel, estranho mesmo.
Esse seu ip ai não é dinamico e nao teria mudado? Estranho a outra forma ficar lockada e nao responder absolutamente nada. Se voce forçar e colocar dados errados, como um IP que nao existe, o pool age da mesma forma?
Paulo boa tarde,
estava fazendo isso o comportamento se repetia, então decidi esperar pois havia um processamento alto, passou duas horas quase e veio o erro:
Exception in thread "main" java.lang.StackOverflowError
at br.portalRadex.conexao.Conexao.getConnection(Conexao.java:30)
se repete muitas vezes
package br.portalRadex.conexao;
import java.sql.Connection;
import java.sql.SQLException;
import oracle.jdbc.pool.OracleDataSource;
public class Conexao {
private OracleDataSource oracleDataSource;
public Conexao(){
try {
oracleDataSource = new OracleDataSource();
oracleDataSource.setURL("jdbc:oracle:thin:@192.168.1.36:1521:MEGA");
oracleDataSource.setUser("mega");
oracleDataSource.setPassword("megamega");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException, ClassNotFoundException {
//Class.forName("oracle.jdbc.driver.OracleDriver");
//return DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.36:1521:MEGA","mega","megamega");
return Conexao.getConnection();
}
}
Pelo que entendi ele da erro o erro no retorno é isso ?``` return Conexao.getConnection();
``` sabe qual erro é esse?
obrigado paulo.
Paulo conseguir resolver substitui a linha que dava erro:
Connection con = oracleDataSource.getConnection();
return con;
obrigado pela atenção
Agora que reparei. Sim, o erro está aí pois tem uma recursao infinita! Voce esta chamando o getConnection da propria classe!
voce deve fazer return oracleDataSource.getConnection()
achamos ao mesmo tempo :). que bom!
isso mesmo por isso da demora e do processamento alto, falta de atenção, valeu paulo
Também estou implementando um pool de conexões com o oracle 11g, gostaria de saber a diferença entre utilizar o dirver JDBC OCI ou utilizar o JDBC Thin?
Obrigado.
o OCI usa apis nativas do sistema. pode ser que não haja versão para alguns sistemas operacionais. o thin é o que chamamos tipo 4: puramente escrito em java. eu ficaria sempre com o thin
Ok, Obrigado!