`
lichengyezi
  • 浏览: 203576 次
  • 性别: Icon_minigender_1
  • 来自: 齐齐哈尔
文章分类
社区版块
存档分类
最新评论

weblogic 报UTF8 representation for string以及is too long for constant pool错误

阅读更多

weblogic 报UTF8 representation for string
is too long for constant pool错误,tomacat下没任何问题。什么原因呢?上网一查,发现weblogic在没有打sp4补丁时,就会报这个错误,
网上查到的解决方法及原因:
这是因为weblogic server为了加快速度做过优化,但是可能你的html语言里包含多字节文字,例如中文,导致突破64K的限制。

如果你一定要大jsp支持,那么你可以这样:
1)升级到8.1sp4

或者
2)在很长的html脚本的中间用<%;%>强行分开,告诉weblogic server不要用一个方法去输出。


在java技术中,每个方法里面代码最大的长度是64K,这是jvm本身设计所决定的。

对应于没有jsp文件,所有的html标记都是通过java代码打印出来的,例如:
out.print("\n<html>\n<body>\n......");

而且jsp的所有输出最终都是在jsp编译生成的servlet里面的service方法里全部打印和输出,这就意味着,如果你的jsp文件太大,准确说是你的html静态代码太长,超过了64K限制的话,那么很不幸,jsp在编译的时候,它的service方法里的代码就会超出64K,就会出这个错误。

这个错误并不是weblogic server的问题,而是归根结底是jvm设计时的一个缺陷。

对这个问题的解决办法就是拆分jsp,不要写入超长的html脚本。

分成多个文件,然后做include,问题解决

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics