while(true)
{
if ((in.read(buf))>0)
{
i++;
if (compareHead(buf))
{
String tmp = new String(buf,0,261);
int pL = packLength(tmp.getBytes()[3],tmp.getBytes()[4]);
if(pL<=256)
{
get = get + new String(tmp.getBytes(),5,pL);
break;
}
else
{
get = get + new String(tmp.getBytes(),5,256);
}
}
}
}
如果第一接到的包长度大于256,,就重复的读取,直到包长度小于256为止,,,
在Resin中没有问题,例如整个长度是275,,,第一次包长275,第二次19,,然后跳出循环,但是在weblogic中却只有一次读取,然后就死循环了,像是丢了后面的数据,,
我记得weblogic在readbuffer时,它本身对长度的判断有问题,由此造成什么异常然后退出。
解决办法在不同的版本、是否有补丁时好像还不一样。很久前碰到过,忘了。
可以用这个异常搜索网上资料,或者去www.dev2dev.com网站看看。