Problema usebean cewolf e erro jsp

2 respostas
F
Bom tenho um projeto Web no Netbeans com os arquivos: ConexaoMysql, ConsumoDiario e a index.jsp. ConexaoMysql
/*
 * ConexaoMysql.java
 *
 * Created on 21 de Junho de 2006, 13:46
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author Fernando
 */
package org.apache.jsp;

import java.sql.*;

import java.io.IOException;
import java.io.InputStream;

import java.util.Properties;

//import org.apache.log4j.Logger;

public class ConexaoMysql {
    
    private static Connection conn;
    private static Statement stm;
    private static PreparedStatement pstm;
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DATABASE_URL = "jdbc:mysql://localhost/cmufatual";
    
    /** Creates a new instance of ConexaoMysql */
    public static void Conectar() {
        
        try
        {
            Class.forName(JDBC_DRIVER).newInstance();
            conn = DriverManager.getConnection(DATABASE_URL,"&&&&","******");
            stm = conn.createStatement();
            //pstm = conn.createPreparedStatement();
        }//fim do try
        catch (SQLException sqlException )
    {
        sqlException.printStackTrace();
    }//fim do catch
        catch (InstantiationException e) {
			System.out.println("Não foi possivel instânciar o driver MySQL "
					+ e.toString());
		} 
        catch (IllegalAccessException e) {
			System.out.println("Não foi possivel instânciar o driver MySQL "
					+ e.toString());
		} 
        catch (ClassNotFoundException e) {
			System.out.println("Não foi possivel encontrar o driver MySQL "
					+ e.toString());
		}
        
    }//fim do metodo conectar
    public static Connection getConn() {
	if (conn == null) {
            Conectar();
        }//fim do if
        return conn;
	}//fim do metodo Connection
    
    public static Statement getStm() {
	if (conn == null) {
            Conectar();
	}

	try {
            stm = conn.createStatement();
	} 
        catch (SQLException e) {
		e.printStackTrace();
		System.out.println("Não foi possivel criar um Statement "
		+ e.toString());
		}//fim do catch
	return stm;
	}//fim do getStm
    
    public static void fechaConexao() {
	try {
            conn.close();
            } 
        catch (SQLException e) {
            e.printStackTrace();
            System.out.println("Não foi possivel fechar a conexão "
            + e.getMessage());
        }//fim do catch
	}//fim do metodo fechaConexao
    
    
    
}

ConsumoDiario

/*
 * ConsumoDiario.java
 *
 * Created on 21 de Junho de 2006, 14:12
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author Fernando
 */
package org.apache.jsp;

import java.sql.*;
import java.util.Date;
import java.util.Map;

import org.jfree.data.general.DefaultPieDataset;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.DatasetProducer;

public class ConsumoDiario implements DatasetProducer {
    
    /** Creates a new instance of ConsumoDiario */
    // Retorna uma Dataset com os dados que irão alimentar o gráfico
	public Object produceDataset(Map arg0) throws DatasetProduceException {
            // Criando um Dataset para o gráfico
            DefaultPieDataset ds = new DefaultPieDataset();
            
            PreparedStatement pstm = null;
            
            String refFaseA = "0";
            String refFaseB = "0";
            String refFaseC = "0";
            String NomeCarga = "Elevadores"; //tem que vir de uma jsp [request.getparameter("NomeCarga");]
            String Local = "cemig"; // tem que vir de uma jsp
            String data = "2002-01-02"; // tem que vir de uma jsp
            double ValorFaseA = 0;
            double ValorFaseB = 0;
            double ValorFaseC = 0;
            //Aqui vem as legendas dos graficos
            String L1 = "Carga Fase A";
            String L2 = "Carga Fase B";
            String L3 = "Carga Fase C";
            String titulo = "Acumulo de carga em " +data+ " em "+NomeCarga+" da "+ Local;
            //String query1 = "";
            try{
                Connection conexao = ConexaoMysql.getConn();
                
                PreparedStatement VfaseA = conexao.prepareStatement("SELECT autocod FROM carga WHERE fase = 'A' AND nome = ?");
                PreparedStatement VfaseB = conexao.prepareStatement("SELECT autocod FROM carga WHERE fase = 'B' AND nome = ?");
                PreparedStatement VfaseC = conexao.prepareStatement("SELECT autocod FROM carga WHERE fase = 'C' AND nome = ?");
                
                VfaseA.setString(1, NomeCarga);
                VfaseB.setString(1, NomeCarga);
                VfaseC.setString(1, NomeCarga);
                VfaseA.executeQuery();
                VfaseB.executeQuery();
                VfaseC.executeQuery();
                //Captura os valores da consulta para um ResultSet
                ResultSet rs = VfaseA.executeQuery();
                ResultSet rs2 = VfaseB.executeQuery();
                ResultSet rs3 = VfaseC.executeQuery();
                while(rs.next()){
                    refFaseA += rs.getDouble("autocod");
                }
                while(rs2.next()){
                    refFaseB += rs2.getDouble("autocod");
                }
                while(rs3.next()){
                    refFaseC += rs3.getDouble("autocod");
                }
                //System.out.printf("O valor de referência da carga na fase A é:%s\n", refFaseA);
                //System.out.printf("O valor de referência da carga na fase B é:%s\n", refFaseB);
                //System.out.printf("O valor de referência da carga na fase C é:%s\n", refFaseC);
                //Até este ponto o programa capturou o numero da String carga no BD para realizar as consultas no BD com valor
                PreparedStatement QfaseA = conexao.prepareStatement("SELECT valor FROM cemig WHERE carga = ? AND data = ?");
                PreparedStatement QfaseB = conexao.prepareStatement("SELECT valor FROM cemig WHERE carga = ? AND data = ?");
                PreparedStatement QfaseC = conexao.prepareStatement("SELECT valor FROM cemig WHERE carga = ? AND data = ?");
                //Enviando as Strings carga com os novos valores obtidos da consulta anterior
                //QfaseA.setString(1, local);
                //QfaseB.setString(1, local);
                //QfaseC.setString(1, local);
                QfaseA.setString(1, refFaseA);
                QfaseB.setString(1, refFaseB);
                QfaseC.setString(1, refFaseC);
                QfaseA.setString(2, data);
                QfaseB.setString(2, data);
                QfaseC.setString(2, data);
                QfaseA.executeQuery();
                QfaseB.executeQuery();
                QfaseC.executeQuery();
                //armazena valores
                ResultSet rs4 = QfaseA.executeQuery();
                ResultSet rs5 = QfaseB.executeQuery();
                ResultSet rs6 = QfaseC.executeQuery();
                while(rs4.next()){
                    ValorFaseA += rs4.getDouble("valor");
                    //ds.setValue(ValorFaseA);
                    
                }
                while(rs5.next()){
                    ValorFaseB += rs5.getDouble("valor");
                    
                }
                while(rs6.next()){
                    ValorFaseC += rs6.getDouble("valor");
                    
                }
                //System.out.printf("O valor total da carga %s(%s) na Fase A é:%s\n", refFaseA, NomeCarga, ValorFaseA);
                //System.out.printf("O valor total da carga %s(%s) na Fase B é:%s\n", refFaseB, NomeCarga, ValorFaseB);
                //System.out.printf("O valor total da carga %s(%s) na Fase C é:%s\n", refFaseC, NomeCarga, ValorFaseC);
                ds.setValue(L1, ValorFaseA);
                ds.setValue(L2, ValorFaseB);
                ds.setValue(L2, ValorFaseC);
            }
            catch (SQLException e) {
			
		}
            return ds;
        }//fim do objeto
        
        public boolean hasExpired(Map arg0, Date arg1) {
            return true;//para expirar em 5 segundos [return (System.currentTimeMillis() - since.getTime())  > 5000;]
        }//fim do boolean
        public String getProducerId() {
		return "ConsumoDiario";
	}
              
}

index.jsp

<%@page contentType="text/html"%>
<%@taglib uri="/WEB-INF/cewolf-1.1.tld" prefix="cewolf" %>

<html><body>
<h1>Consumo Diário</h1> <hr>

<jsp:useBean id="ConsumoDiario" class="ConsumoDiario" />

<cewolf:chart id="diarioConsumo1" title="Consumo Diário" type="pie">
	<cewolf:data>
	  <cewolf:producer id="ConsumoDiario" />
	</cewolf:data>
</cewolf:chart>

<p>
<cewolf:img chartid="diarioConsumo1"
	renderer="cewolf" width="500" height="400" />
<p>
</body></html>

Contudo ao tentar rodar sempre recebo o seguinte erro:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org/apache/jsp/ConsumoDiario
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)

root cause

java.lang.NoClassDefFoundError: org/apache/jsp/ConsumoDiario
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
java.lang.Class.getConstructor0(Class.java:2640)
java.lang.Class.newInstance0(Class.java:321)
java.lang.Class.newInstance(Class.java:303)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:143)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:319)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:251)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)

note The full stack trace of the root cause is available in the Sun-Java-System/Application-Server logs.

Alguém poderia me dar uma luz sobre oque está acontecendo com a utilização da minha classe ConsumoDiario? Obrigado

2 Respostas

M

Dica:Procure evitar colocar o código do seu sistema inteiro no forum isto contribui e muito para seja identificado o problema com maior facilidade. :joia:

Hummm… A tua classe ConsumoDiario deve estar dentro de um pacote para ser utilizada… por exemplo:

carro.ConsumoDiario

:okok:

F

Mas ela ja esta em um package em comum com o conexaoMysql, so o fato das duas classes também estarem no mesmo diretório não ja permitiria o uso de uma, sem necessitar import pct1.pct2.ConexaoMysql; ? Por exemplo. O erro apresentado dentro do NetBeans indica que a classe ConsumoDiario está retornando NULL, em referência a um arquivo interno para rodar Jsp.

Criado 22 de junho de 2006
Ultima resposta 22 de jun. de 2006
Respostas 2
Participantes 2