Pessoal, estou fazendo um servlet o qual se conecta num banco, as informações do banco de dados eu deixei em um bean que guarda apenas as informações, senha, e função de retorno desses atributos, mas quando rodo meu servlet ele não consegue conectar ao banco de dados… da uma exception de DefaultClassNotFound…
[quote=“bLaCkWiZaRd”]Pessoal, estou fazendo um servlet o qual se conecta num banco, as informações do banco de dados eu deixei em um bean que guarda apenas as informações, senha, e função de retorno desses atributos, mas quando rodo meu servlet ele não consegue conectar ao banco de dados… da uma exception de DefaultClassNotFound…
Alguém saberia me dizer a causa???[/quote]
Você poderia postar pelo menos uma parte do seu servlet aí
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class tes.test
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
java.lang.Thread.run(Thread.java:534)
root cause
java.lang.NoClassDefFoundError: LinAdmin/Database
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:1610)
java.lang.Class.getConstructor0(Class.java:1922)
java.lang.Class.newInstance0(Class.java:278)
java.lang.Class.newInstance(Class.java:261)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
java.lang.Thread.run(Thread.java:534)
No desespero eu copiei o Database que ele não encontra pra td q eh diretório
em que diretório ele deveria estar??? eu to pirando de vez :roll:
ehhehehhe =P preciso de uma :idea:
Kra sei la o que tava acontecendo… comecei td do zero de novo …
so que agora foi hehehehhehe :roll: agora qnd eu tento inicializar o DB ta dando otro erro, ele acusa que o DB ja esta aberto ai vai o codigo…
parte da servlet que acessa o DB
try{
Database db = new Database();
db.openConnection();
out.println("db: "+ db.isConnected());
db.closeConnection();
}
catch(Exception e){
e.printStackTrace();
out.println("ERRO: " + e.toString());
}
o BEAN que acessa o banco
package bwpkg;
import java.beans.*;
import java.io.Serializable;
import java.sql.*;
/**
* @author tiago
*/
public class Database extends Object implements Serializable {
private Connection conn;
private boolean pv_status;
public Database() throws ClassNotFoundException{
try{
pv_status = false;
Class.forName("com.postgresql.jdbc.Driver");
}
catch(ClassNotFoundException eclass){
System.err.println("EI2P ERROR:Database.Database() Driver not Found. " + eclass.toString() );
}
}
public void openConnection() throws SQLException{
if(!this.isConnected() || !conn.isClosed()){
try{
conn = DriverManager.getConnection( Configuration.getDBUrl() + Configuration.getDBHost() + "/" + Configuration.getDBName() + "?charSet=ISO8859-1", Configuration.getDBUser(), Configuration.getDBPassword());
conn.setAutoCommit(false);
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
if(!conn.isClosed()) pv_status = true;
else
throw new SQLException("EI2P ERROR:Database.openConnection Could make a connection with Database");
}
catch(SQLException esql){
throw new SQLException("EI2P ERROR:Database.openConnection Could make a connection with Database "+ esql.toString());
}
}
throw new SQLException("EI2P ERROR:Database.openConnection database connection already open");
}
public void closeConnection() throws SQLException {
if (this.isConnected() || !conn.isClosed()) {
try {
conn.close();
if(conn.isClosed())
pv_status = false;
else
throw new SQLException("EI2P ERROR:Database.closeConnection() Could make a connection with database");
} catch (SQLException esql) {
throw new SQLException("EI2P ERROR:Database.closeConnection() Could make a connection with database "+ esql.toString());
}
}
else
throw new SQLException("EI2P ERROR:Database.closeConnection() database connection already closed ");
}
/**
* Method beginTransaction.
* @throws SQLException
*/
public void beginTransaction() throws SQLException {
try {
conn.setSavepoint();
} catch (SQLException esql) {
throw new SQLException("EI2P ERROR:Database.beginTransaction() Cannot set the save point. " + esql.toString());
}
}
/**
* Method commit.
* @throws SQLException
*/
public void commit() throws SQLException {
try {
conn.commit();
} catch (SQLException esql) {
throw new SQLException("EI2P ERROR:Database.commit() Cannot commit the transaction. " + esql.toString());
}
}
/**
* Method rollback.
* @throws SQLException
*/
public void rollback() throws SQLException {
try {
conn.rollback();
} catch (SQLException esql) {
throw new SQLException("EI2P ERROR:Database.rollback() Cannot rollback the transaction. " + esql.toString());
}
}
/**
* Method executeQuery.
* @param sql
* @return ResultSet
* @throws SQLException
*/
public ResultSet executeQuery(String sql) throws SQLException {
try {
java.sql.Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
return rs;
} catch (SQLException esql) {
throw new SQLException("EI2P ERROR:Database.executeQuery(String sql) Statement couldn't be created. " + esql.toString());
}
}
public int executeUpdate(String sql) throws SQLException {
try {
java.sql.Statement stat = conn.createStatement();
int rows = stat.executeUpdate(sql);
return rows;
} catch (SQLException esql) {
throw new SQLException("EI2P ERROR:Database.executeUpdate(String sql) Statement couldn't be created. " + esql.toString());
}
}
/**
* Method isConnected.
* @return boolean
*/
public boolean isConnected() {
return pv_status;
}
}
o erro
java.sql.SQLException: EI2P ERROR:Database.openConnection database connection already open
deve ser alguma burrada minha mas ta valendo =PPP agradeço qq ajuda
Cara, são duas coisas diferentes:
Connection = null
Connection.isClosed()
mas se você tenta perguntar se Connection.isClosed() quando Connection = null, ele aponta NullPointerException
e você quer criar uma conexão apenas se a conexão for igual a null E se a conexão não estiver fechada, lembrando que o metodo isClosed só retorna TRUE se o metodo close() foi chamado previamente.
Então tudo o que você precisa perguntar é:
if( Connection == null )
e para fechar, garantindo
if( Connection != null || !Connection.isClosed() )
Bem, posso estar enganado, mas acho que o caminho é mais ou menos por aí
Kra tentei tentei tentei mas não foi…
resultado= ranquei esse maldito is e ta indo sem ele mesmo =PPP, mais tarde eu tento descobrir de novo o que acontece =PPPP