论坛首页 入门技术论坛

关于"response already committed" 的问题

浏览 7678 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-22  

最近遇到一个问题,觉得挺有意思。

现在正在将一个项目从web service 转到 EJB2 (是否觉得很奇怪?),转移过程中出现了一些问题。其中一个exception如下:

java.lang.IllegalStateException:   response   already   committed

当时第一个反应是可能页面 forward跳转或者buffer size不够了。因为我们用的是公司自己开发的web framework。所以所有的request flow control 都是封装起来了。xml配置文件之前在webservice下是可以的,页面也一直没有问题。

在网上google了一下,陈述的观点无非是response已经commit过了,也许是因为人为,也许是因为页面大小超过了page的buffer。于是乎尝试用response.setBufferSize()修改page大小,但没有效果。由于第一次遇到这样的问题,而且用的是websphere的portal和公司的framework,所以一开始找不到头绪。

确定是jsp页面的问题后,开始用最笨的方法,尝试着删减页面的代码,最后问题出在了一句代码。

HashMap map = xxxResultBean.getResultMap();

原来这个method返回的是一个TreeMap,用HashMap来reference就出现了casting的问题。由于这个Bean里面定义的field是Map,所以complie是不会有问题,直到page真的load的时候才会crash。

但问题来了,为什么之前在web  service的时候没有问题,但到了EJB就不行了呢?原来在web service和EJB的时候,对class的定义会有所不同,EJB比较遵从原来的class,而web service则不太一样。

一个小问题,用最笨的方法detect。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics