MySQL com IReport[Erro Macabro]

4 respostas
Ironlynx

Pessoal, ao colocar meu programa para rodar na Locaweb, tô obtendo um erro macabro ao gerar um relatório com IReport:

com.mysql.jdbc.CommunicationsException 
Stack trace:
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2563)
     com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
     com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
     com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
     com.mysql.jdbc.Connection.execSQL(Connection.java:2994)
     com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936)
     com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030)
     org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
     com.fc.dao.mysql.MySQLFormulaDAO.loadById(MySQLFormulaDAO.java:72)
     com.fc.action.RelatorioAction.getRelatorio(RelatorioAction.java:70)
     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:597)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:299)
     org.mentawai.filter.InjectionFilter.filter(InjectionFilter.java:154)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.VOFilter.filter(VOFilter.java:133)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.ValidatorFilter.filter(ValidatorFilter.java:154)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.AuthenticationFilter.filter(AuthenticationFilter.java:125)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.AutoWiringFilter.filter(AutoWiringFilter.java:110)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.IoCFilter.filter(IoCFilter.java:83)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.ConnectionFilter.filter(ConnectionFilter.java:80)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.filter.ExceptionFilter.filter(ExceptionFilter.java:83)
     org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
     org.mentawai.core.Controller.invokeAction(Controller.java:759)
     org.mentawai.core.Controller.service(Controller.java:624)
     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
     org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
     org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
     org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
     org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     br.com.locaweb.tomcat.LocaWebValve.invoke(LocaWebValve.java:134)
     org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
     org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
     org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
     org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
     org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
     org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
     org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:686)
     java.lang.Thread.run(Thread.java:619)

Alguém já teve algum erro parecido?O meu relatório ás vezes é gerado, outras vezes dá pau(no momento tá 50% de geração e pau).
Se alguém tiver uma idéia ajudaria muito.Ah, detalhes:
Pool de Conexões: DBCP1.2.2 com commons-pool1.4
Connector do MySQL: 3.1.12

4 Respostas

Luiz_Gustavo

Bom dia,

ao começar a ler seu post a primeira coisa que me veio à cabeça foi a questão do pool, mas depois vi que você está usando.
Eu tive (e ainda tenho) muitos problemas com aplicações na locaweb devido ao timeout de banco deles, que é de 15 segundos.
Imagino que você deva ter se orientado quanto ao timeout e às melhores configurações do pool de conexões junto ao pessoal da Locaweb.
Eu tive durante muito tempo problemas com o pool, quando usava em uma aplicação o C3p0. O pessoal da Locaweb me orientou a usar uma configuração de Pool deles, através do DBCP. Quando digo “configuração de pool deles”, me refiro a entrar no painel de controle e criar um datasource, e usar esse datasource na aplicação. Não tenho jars do DBCP na aplicação (o que poderia dar conflitos).
Depois de usar o datasource (que já tem um pool configurado por eles) meus problemas diminuiram muito.

Abraço!

Ironlynx

Bom dia, Luiz Gustavo.
Cara, que parto!!! :shock:
Pedi para eles configurarem para mim o JNDI, pois para variar, gerar o Contexto não tá funcionando…
E minha app só atualiza 2 tabelas de controle(historico quando o user se loga, e consulta quando gera relatório).Fora isso, há apenas uma atualização por mês, e são apenas 60 registros!!! Ou seja, o grosso do sistema são consultas para gerar relatório(e foi criado um Cache para trazer o grosso para memoria) , nada mais… :x
Meu patrão tá parindo três cães,dois gatos e um hamster… :roll:

Luiz_Gustavo

Hahahahha…
Cara, a maioria das aplicações que temos lá também não são tão complexas, são mais consultas e relatórios também, mas essa questão do timeout deles mata.
Eu tive muiiiiiiiiiiita dor de cabeça com isso, acredite.
Mas faça isso. Tente usar o datasource criado por eles, acredito que vá diminuir muito os seus problemas.

Abraço!

Ironlynx

Eu tô tendo, acredite… :lol:
Meu chefe tá tendo um troço… o cara vai gerar relatório(ou se logar no sistema) e recebe uma stacktrace…Eles tinham que deixar isso claro:“Cuidado ao usar um Pool de Conexões com MySQL devido ao timeout de 15 segundos, prefira o nosso Datasource”.
Meu minha base inteira tem 600KB, e a maior tabela(são apenas 9, inclusa as 2 de controle), 6mil registros.Imagino os problemas que eles possam ter com sistemas maiores… :roll:

Criado 11 de fevereiro de 2009
Ultima resposta 11 de fev. de 2009
Respostas 4
Participantes 2