HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.StringIndexOutOfBoundsException: String index out of range: 46
java.lang.String.charAt(String.java:558)
org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:197)
org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:155)
org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:421)
org.jfree.chart.title.TextTitle.arrange(TextTitle.java:395)
org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1143)
org.jfree.chart.JFreeChart.draw(JFreeChart.java:1027)
org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1244)
org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1223)
org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:173)
org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:119)
C_DiarioPizza.doPost(C_DiarioPizza.java:60)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.5 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.5
HTTP 500 - somente no internet explore
F
Bom estou com um problema em um aplicação JSP-SERVLET, mas o erro ocorre somente no internet explore, oque me deixa mais desesperado, pois como pode rodar blza no firefox e nada no iE. Tenho uma jsp que submete um Post para um servlet, esse conecta ao banco de dados MySQL e me retorna um grafico, JfreeChart. Contudo no IE quando submeto o Post o servlet retorna o erro Http 500, listado abaixo:
Pelo erro parece que o problema está ligado ao bufferImage do JfreeChart, alguém saberia a solução para isso?
Maldito Bill Gates....
Obrigado
4 Respostas
C
poderia colcoar o codigo q gera o chart e retorna o seu BufferedImage pra gente dar uma olhada aki.
F
Abaixo segue o código do servlet:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class C_DiarioLinha extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out1 = response.getWriter();
out1.println("<HTML>");
out1.println("<HEAD>");
out1.println("<TITLE>Corrente Diaria</TITLE>");
out1.println("</HEAD>");
out1.println("<BODY>");
out1.println("<CENTER>");
out1.println("<BR>");
out1.println("<H2>Corrente Diaria</H2>");
out1.println("<BR>");
out1.println("<FORM METHOD=POST>");
out1.println("<Data : >");
out1.println("<INPUT TYPE=TEXT NAME=DataInicio>");;
out1.println("<BR>");
out1.println("<Carga : >");
out1.println("<INPUT TYPE=TEXT NAME=Carga>");
out1.println("<BR>");
out1.println("<Local : >");
out1.println("<INPUT TYPE=TEXT NAME=Local>");
out1.println("<BR>");
out1.println("<INPUT TYPE=SUBMIT VALUE=Consulta>");
out1.println("</FORM>");
out1.println("</CENTER>");
out1.println("</BODY>");
out1.println("</HTML>");
}//fim do get
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
//capturando as strings de entrada
String DataInicio = request.getParameter("DataInicio");
String Carga = request.getParameter("Carga");
String Local = request.getParameter("Local");
HttpSession session = request.getSession(true);
String nomeGrafico = "C_DiarioLinha";
session.setAttribute("nomeGrafico1",nomeGrafico);
session.setAttribute("C_DiarioLinha_DataInicio", DataInicio);
session.setAttribute("C_DiarioLinha_Carga", Carga);
//pegando dados
try {
//pegando dados
DefaultCategoryDataset ds = Consulta(DataInicio, Carga, Local);
String Titulo = "Acumulo de carga em "+DataInicio+" em "+Carga;
JFreeChart grafico = ChartFactory.createLineChart(Titulo, "Hora", "Corrente(A)", ds, PlotOrientation.VERTICAL, true, false, false);
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, grafico, 610, 330);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}//fim do post
private DefaultCategoryDataset Consulta(String DataInicio, String Carga, String Local) throws ClassNotFoundException{
String JDBC_DRIVER = "com.mysql.jdbc.Driver";
String DATABASE_URL = "jdbc:mysql://ENDEREÇO_IP/BANCO";
DefaultCategoryDataset ds = new DefaultCategoryDataset();
try
{
Class.forName(JDBC_DRIVER);
Connection conn = DriverManager.getConnection(DATABASE_URL,"USUARIO","SENHA");
Statement stm = conn.createStatement();
//prepara a pesquisa
PreparedStatement consultaDiarioA = conn.prepareStatement("select ("+Local+".valor*calibracao.constante) AS valor, HOUR("+Local+".hora) AS hora FROM "+Local+", carga, calibracao" +
" WHERE carga.autocod="+Local+".carga AND calibracao.carga="+Local+".carga AND carga.fase='A' AND "+Local+".data=?" +
" AND carga.nome=? AND "+Local+".hora BETWEEN '00:00:00' AND '23:59:59' GROUP BY HOUR("+Local+".hora)");
PreparedStatement consultaDiarioB = conn.prepareStatement ("select ("+Local+".valor*calibracao.constante) AS valor, HOUR("+Local+".hora) AS hora FROM "+Local+", carga, calibracao" +
" WHERE carga.autocod="+Local+".carga AND calibracao.carga="+Local+".carga AND carga.fase='B' AND "+Local+".data=?" +
" AND carga.nome=? AND "+Local+".hora BETWEEN '00:00:00' AND '23:59:59' GROUP BY HOUR("+Local+".hora)");
PreparedStatement consultaDiarioC = conn.prepareStatement ("select ("+Local+".valor*calibracao.constante) AS valor, HOUR("+Local+".hora) AS hora FROM "+Local+", carga, calibracao" +
" WHERE carga.autocod="+Local+".carga AND calibracao.carga="+Local+".carga AND carga.fase='C' AND "+Local+".data=?" +
" AND carga.nome=? AND "+Local+".hora BETWEEN '00:00:00' AND '23:59:59' GROUP BY HOUR("+Local+".hora)");
//Enviando as Strings
consultaDiarioA.setString(1, DataInicio);
consultaDiarioA.setString(2, Carga);
consultaDiarioB.setString(1, DataInicio);
consultaDiarioB.setString(2, Carga);
consultaDiarioC.setString(1, DataInicio);
consultaDiarioC.setString(2, Carga);
//executando a pesquisa e setando ao ResultSet
ResultSet rsA = consultaDiarioA.executeQuery();
ResultSet rsB = consultaDiarioB.executeQuery();
ResultSet rsC = consultaDiarioC.executeQuery();
while((rsA.next())&&(rsB.next())&&(rsC.next())){
ds.setValue(rsA.getDouble("valor"), "Corrente Fase A", rsA.getString("hora"));
ds.setValue(rsB.getDouble("valor"), "Corrente Fase B", rsA.getString("hora"));
ds.setValue(rsC.getDouble("valor"), "Corrente Fase C", rsA.getString("hora"));
}
return ds;
}//fim do try
catch (SQLException e) {
e.printStackTrace();
}//fim do catch
return ds;
}//fim do Consulta
}
C
Kra, uma dica… crie um método que retornara um BufferedImage pra ti, ou seja o método que cria o chart e retorna pra vc uma imagem, fica bem mais facil tu colocar ela na sua pagina.
F
Implementei a sua dica de criar um metodo BufferedImage, e novamente no Firefox rodou beleza. Contudo no IE nada de funcionar deu o mesmo erro…
Criado 17 de janeiro de 2007
Ultima resposta 24 de jan. de 2007
Respostas 4
Participantes 2
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Guia pratico de TypeScript: Melhore suas aplicacoes... Por Thiago da Silva Adriano — Casa do Codigo