Cruel duvida

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=“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í

package tes;

import LinAdmin.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class test extends HttpServlet {
    
    ...

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
   
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        try{
        Database db = new Database();
        db.openConnection();
        db.closeConnection();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        out.println("</body>");
        out.println("</html>");
        out.close();
    }

    ...
    
}

ve se isso te ajuda… =P

eu não encontrei nada de errado, ele não indica qual a linha que está dando erro…

o erro que está dando é esse

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)

Cara, você está tentando usar a classe DataBase que estaria dentro do pacote LinAdmin.

Mas o erro acusa que esta classe não existe
java.lang.NoClassDefFoundError: LinAdmin/Database

O problema é que essa classe existe =/
e está no pacote LinAdmin só que não vai =~

package LinAdmin;

import java.beans.*;
import java.io.Serializable;
import java.sql.*;

public class Database extends Object implements Serializable {


....

Nossa bizarro.

O pacote LinAdmi está disponivel para o projeto? Não consigo pensar em outra coisa.

No desespero eu copiei o Database que ele não encontra pra td q eh diretório :cry:
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 :cry:
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

Baum cara, admito que não li o codigo todo, mas aqui

if(!this.isConnected() || !conn.isClosed()){

Você executa o código que gera a conexão mesmo que uma conexão já esteja aberta :smiley: tira aquela exclamação de la hehe

Eu bem que tentei =P ai vai os testes

  if(this.isConnected() || conn.isClosed()){
Erro:
 java.lang.NullPointerException
 if(!this.isConnected() || conn.isClosed()){
Erro:
java.sql.SQLException: EI2P ERROR:Database.openConnection database connection already open 
 if(this.isConnected() || !conn.isClosed()){
Erro:
java.lang.NullPointerException
 if(!this.isConnected() || !conn.isClosed()){
Erro:
java.sql.SQLException: EI2P ERROR:Database.openConnection database connection already open 

Ta dificiillll uhahuauhauhahuuha aqui as coisa num tao colaborano… :cry:
ou eu to sendo mto burro num e possivel =P

Cara, são duas coisas diferentes:
Connection = null
Connection.isClosed()

mas se você tenta perguntar se Connection.isClosed() quando Connection = null, ele aponta NullPointerException :smiley:

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í :smiley:

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

valews pela ajuda =P