| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 15:44:33
|
latmantovani
What is classpath?
Membro desde: 24/03/2008 13:52:45
Mensagens: 6
Localização: São Paulo
Offline
|
A empresa em que trabalho possui uma ferramenta que gera páginas JSP a partir de outras fontes de dados.
Algumas páginas apresentam o erro abaixo (as maiores páginas geradas):
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit
Gostaria de saber se existe algum parametro que poderia configurar de maneira a aumentar o limite existente?
Sugestões como: otimize o código, utilize jsp include etc... nao resolvem o problema, pois o usuário tem posse da ferramenta em questão podendo dar manutenção ou criar novas páginas a qualquer momento.
Se esta for a única solução (alteração / otimização do código gerado), então teremos que mexer no código fonte da ferramenta e é justamente isto que não queremos.
Muito Obrigado pela ajuda.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:04:03
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline
|
Ola
Esse é um limitante do byecode do java: uma classe nao pode ter mais de 2^16 bytes. Nao daria pra aumentar, ja que o java usa 16 bits para se enderecar a uma posicao do codigo:
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659
Sem duvida isso é um grande indicador que o sistema esta com um problema grave em relacao a MVC e deve ter muito scriptlet dentro dos seus JSP.
Em vez de quebrar em includes, refatore o codigo e quebre em tag files, custom tags e beans java!!!
jsp:include PAGE em vez de jsp:include FILE deve ajudar tambem, mas voce vai continuar com o problema do codigo estar muito misturado.
This message was edited 1 time. Last update was at 24/03/2008 16:06:03
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:05:02
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 803
Localização: Sampa
Offline
|
ao que parece esses caras tiveram o mesmo problema que você:
http://www.velocityreviews.com/forums/t146001-reached-the-65535-bytes-limit.html
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:12:57
|
latmantovani
What is classpath?
Membro desde: 24/03/2008 13:52:45
Mensagens: 6
Localização: São Paulo
Offline
|
Paulo Silveira wrote:Ola
Esse é um limitante do byecode do java: uma classe nao pode ter mais de 2^16 bytes. Nao daria pra aumentar, ja que o java usa 16 bits para se enderecar a uma posicao do codigo:
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659
Sem duvida isso é um grande indicador que o sistema esta com um problema grave em relacao a MVC e deve ter muito scriptlet dentro dos seus JSP.
Em vez de quebrar em includes, refatore o codigo e quebre em tag files, custom tags e beans java!!!
jsp:include PAGE em vez de jsp:include FILE deve ajudar tambem, mas voce vai continuar com o problema do codigo estar muito misturado.
Obrigado mas como havia comentado não quero mexer no código fonte, não quero e não posso refatorar o código... pois o mesmo é gerado por uma ferramenta.... a ferramenta pega código escrito na linguagem X, utilizada pelo cliente, e transforma em JSP - java.
O código gerado verdadeiramente é uma salada.... mas a origem, a linguagem X é estruturada... não quero mexer no código gerado pois neste caso terei que mexer na ferramenta, e mexer na ferramenta é algo bastante complexo.
Espero que tenham entendido o meu problema.... infelizmente creio que terei que mexer na ferramenta que gera o código java e é justamente isso que quero evitar. Seria muito mais simples: troque o parametro XPTO do global.jsp de 65535 para o valor desejado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:19:08
|
latmantovani
What is classpath?
Membro desde: 24/03/2008 13:52:45
Mensagens: 6
Localização: São Paulo
Offline
|
Pois é
E a solução apontada neste post e em todos os outros que vi na net sugerem: otimizar código fonte. E isto é justamente o que a gente não deseja... pois quem gera o fonte é uma ferramenta.
Obrigado pela ajuda
latmantovani
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:23:25
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline
|
qual é a ferramenta?
nao deve ser tao complicado de trocar os includes de FILE para PAGE, e mtas vezes essa modificacao nao tem impacto funcional.
mas esse numero de 65535 nao da pra mudar mesmo, é da JVM.
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:31:12
|
latmantovani
What is classpath?
Membro desde: 24/03/2008 13:52:45
Mensagens: 6
Localização: São Paulo
Offline
|
Paulo Silveira wrote:qual é a ferramenta?
nao deve ser tao complicado de trocar os includes de FILE para PAGE, e mtas vezes essa modificacao nao tem impacto funcional.
mas esse numero de 65535 nao da pra mudar mesmo, é da JVM.
A ferramenta é proprietária....
Ela gera um linguição.... e não tem include file neste linguição que ele gera.
A ferramenta é um compilador da linguagem X para diferentes linguagens. ASP - JSP - VB - .Net.
O cliente esta migrando de ASP para JSP. As páginas ASP funcionam normalmente porém as JSP dão o erro informado.
Obrigado pela ajuda.
This message was edited 1 time. Last update was at 24/03/2008 16:32:25
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:35:11
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17539
Offline
|
A ferramenta é proprietária....
Ou seja, você (ou seu chefe, ou seu patrão, ou então a companhia que está contratando seus serviços) provavelmente pagou por ela. Chame o suporte técnico e exija uma solução, ou seu dinheiro de volta.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:41:19
|
latmantovani
What is classpath?
Membro desde: 24/03/2008 13:52:45
Mensagens: 6
Localização: São Paulo
Offline
|
thingol wrote:
Ou seja, você (ou seu chefe, ou seu patrão, ou então a companhia que está contratando seus serviços) provavelmente pagou por ela. Chame o suporte técnico e exija uma solução, ou seu dinheiro de volta.
Quisera eu fosse tão simples assim :).... mas esta é outra discussão.
Tecnicamente, ao que parece, não existe outra solução a não ser alteração na ferramenta em questão, correto?
This message was edited 3 times. Last update was at 24/03/2008 16:44:56
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:44:47
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline
|
ou alterar o fonte gerado... ai!
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:49:15
|
latmantovani
What is classpath?
Membro desde: 24/03/2008 13:52:45
Mensagens: 6
Localização: São Paulo
Offline
|
Paulo Silveira wrote:ou alterar o fonte gerado... ai!
isso não vai acontecer pois o cliente teria que alterar o fonte gerado e certamente o cliente não vai querer fazer isso, e com toda razão a ele. Se não precisavam fazer isso anteriormente, porque precisarão fazer agora?
A gente mudar o fonte... inviável... são mais de 3000 telas (fora as novas que estão sendo criadas), sendo que são 2 gerações por dia.... imagina, teria que contratar ao menos uma pessoa pelo resto da vida só pra fazer isso. Economicamente inviável.
Valeu pela ajuda. Vamos ver quais são os work arounds possíveis, se é que existem alternativas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 16:52:32
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17539
Offline
|
Você pode tentar compilar as classes Java criadas pelo seu JSP com o Jikes (compilador do Eclipse) em vez do javac - acho que isso é possível a partir do Tomcat 6, se não me engano. Acho que o Jikes tem um limite um pouco maior, mas não tenho certeza.
Como normalmente esse problema é porque as classes ficam grandes devido à grande quantidade de strings (não exatamente código), esse problema pode ser contornado, dependendo do seu web container, com alguma configuração. No caso do Tomcat, se você tiver um pouco de sorte, você pode usar "trimSpaces" (configuração em web.xml) para fazer 2 coisas:
- Tirar os espaços em branco que aparecem aos montes nas páginas HTML, entre os tags;
- Dependendo da página, talvez ela seja ligeiramente reduzida e acabe cabendo nesse tal limite.
http://tomcat.apache.org/tomcat-5.5-doc/jasper-howto.html
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 17:31:33
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline
|
hum, talvez um obfuscador ajude bastante, e tirar as opcoes de compilar com info de debug. vai certamente diminuir bastante o tamanho do bytecode. mas vc so vai postergar o seu problema!
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 18:29:08
|
Leozin
JWizard
![[Avatar]](/images/avatar/5dca4c6b9e244d24a30b4c45601d9720.png)
Membro desde: 18/06/2005 21:01:26
Mensagens: 2286
Localização: São Paulo/SP
Offline
|
poxa, desculpa o comentário inútil, mas só eu que fiquei com medo da ferramenta?!
posta o nome ae pra gente passar longe hehehe
|
http://www.leozin.com.br/blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2008 21:44:03
|
Sami Koivu
Virtual Machine Man
![[Avatar]](/images/avatar/a4d8e2a7e0d0c102339f97716d2fdfb6.jpg)
Membro desde: 16/09/2004 09:49:27
Mensagens: 571
Localização: Curitiba-PR
Offline
|
Paulo Silveira wrote:hum, talvez um obfuscador ajude bastante, e tirar as opcoes de compilar com info de debug. vai certamente diminuir bastante o tamanho do bytecode. mas vc so vai postergar o seu problema!
Talvez eu esteja com muito sono, já, mas vejo um problem em usar um obfuscador. Os obfuscadores normalmente trabalham com código compilado.
1) Não sei se o .class é gerado nesse caso.
2) E se for gerado com métodos com mais de 65535 bytes, o código vai estar corrupto. Os blocos try/catch/finally que ficam além do limite vão estar apontando para lugares errados. Tudo bem que o código gerado talvez não tenha tratamento algum deste tipo.
[]s,
Sami
|
(Slightly) Random Broken Thoughts on Java Security |
|
|
 |
|
|