Estou com problema com o JDBC pois tenho uma aplicação
só que ela estava criando varias sessões no banco.
para cada bean da pagina [color=“red”]JSP[/color]
eu reescrevi o método construtor e consegui baixar para 1 sessão no banco apenas
mas agora não esta funcionando corretamente
não consigo trazer nenhuma informação do banco.
Será que alguém pode me ajudar?
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class ConnectionDB implements HttpSessionBindingListener{
private static Connection connection;
private static ConnectionDB instance ;
private Statement statement;
private static final String drive = "oracle.jdbc.driver.OracleDriver";
private static final String dbURL="jdbc:oracle:thin:@1.0.0.0:1521:teste";
private static String user;// = "user";
private static String pws; //= "senha";
private String mensagem ="";
public ConnectionDB() {
}
public void ConnectionDB(String user, String pws ) {
this.user = user;
this.pws = pws;
try {
Class.forName(drive);
connection=DriverManager.getConnection(dbURL,user,pws);
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
mensagem = "Conectado";
} catch (ClassNotFoundException e){
connection = null;
} catch (SQLException e ){
connection=null;
if (e.getErrorCode() == 1017){
mensagem = "erro de usuario";
}else{
mensagem = "ConnectionDB: Driver não carregado";
}
}
}
public static Connection getConnection(){
return connection;
}
public void commit() throws SQLException{
connection.commit();
}
public void rollback() throws SQLException{
connection.rollback();
}
public void setAutoCommit(boolean autoCommit)throws SQLException{
connection.setAutoCommit(autoCommit);
}
public ResultSet executeQuery(String sql) throws SQLException{
return statement.executeQuery(sql);
}
public int executeUpdate(String sql) throws SQLException{
return statement.executeUpdate(sql);
}
public void valueBound(HttpSessionBindingEvent event){
System.err.println("ConexaoBD: método valueBound chamado ");
try {
if (connection == null|| connection.isClosed()){
connection = DriverManager.getConnection(dbURL,user,pws);
statement = connection.createStatement();
}
} catch (SQLException e ){
connection = null;
}
}
public void valueUnbound(HttpSessionBindingEvent event){
try {
connection.close();
} catch(SQLException e ){}
finally{
connection = null;
}
}
protected void finalizer(){
try{
connection.close();
} catch (SQLException e){}
}
public static ConnectionDB getInstance(){
if (instance == null){
instance = new ConnectionDB();
}
return instance;
}
public void setUser(String user)
{
this.user = user;
}
public void setPws(String pws)
{
this.pws = pws;
}
}
[/color]
, se quiser uma ajuda de como implementar no Tomcat, é só falar…