Eae galera, queria saber como eu poderia implementar o poll com o banco Oracle 11g
obrigado
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 aJVM
assume um processamento bem alto e no console
nao aparece erro algum, apenas na aba debug
que 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!