现在的位置: 首页 > 综合 > 正文

两个问题。

2017年01月04日 ⁄ 综合 ⁄ 共 782字 ⁄ 字号 评论关闭

之前项目开发的时候, 一直用的tomcat开发。测试的时候用的也只是jboss,最终模拟正式环境部署的时候, 用的weblogic。遇到了几个问题。

1.关于InputStream类的available   方法。

开发的时候, 涉及到文章保存后,存为一个文件到硬盘,显示文章的时候,需要先读取这个文件到流中, 然后显示到页面。开发的时候,文件上传的位置一直是本机,而部署后,文件当作附件同一上传到samba服务器上,于是问题来了。我在本地测试的时候 ,读取到了这个文件的输入流,然后使用Java的字节流的形式读取,首先new了一个字节数组,在new这个数组的时候,需要给该数组指定大小。于是我从获取到的InputStream中,直接调用avaliable方法,获取可用的大小。然后将这个大小赋给了数组。在本地开发时,一直正常。但部署后,发现文章内容读取不出来,而且没有异常出现。排查到最后,终于发现,InputStream的avaliable方法,返回的值是“0”,而且一直都是。原因是:该方法在通过网络读取文件的时候,有时候数据的传输是间断的,InputStream可能已经打开了,但是数据还没有通过网络传输到本地,因此,通过该方法,获取到可用的字节数为0.

2.在weblogic环境下下载文件

在本地开发或者测试的时候,并没有weblogic环境,部署到weblogic上以后,点击文件下载的时候,总是报异常:

java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '146592' bytes instead of stated: '462285' bytes.

搜了一下,原来问题是因为,下载的时候,代码中并没有设置Content-Length这个头属性,导致实际文件的大小和输出的不一致。设置一下这个属性就好了。

抱歉!评论已关闭.