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,问题解决

你可能感兴趣的:(jvm,html,jsp,weblogic,脚本)