在Java应用程序中,是否可以在与运行应用程序的服务器具有相同域的URL上打开流?
例如,我正在播放Play!框架应用程序:
http://www.my-domain.com/
我试图打开一个InputStream的URL
是:
http://www.my-domain.com/public/zipfile.zip
当我尝试通过URL inputstream
方法访问openStream()
时,应用程序挂起(但仍然运行)并且不再继续(就好像它已被锁定)。
导致问题的代码行如下:
InputStream is = new BufferedInputStream(url.openStream(), 1024);
额外信息
从其他域访问URL时,代码按预期工作,例如:
http://www.different-domain.com/public/zipfile.zip
我已尝试使用127.0.0.1
,我已尝试使用我的网络IP地址,并使用hosts
伪造了一个真实的域名。这些都没有奏效,这让我相信这是一个问题,从同一个域引用的url与运行它的app相同。
答案 0 :(得分:1)
我不确定你所谓的'自我引用',但如果你的意思是'服务器'和'客户端'在同一个应用程序中,也许它是线程问题(就像同一个线程试图读取和写入流同时)?我会在你的应用程序运行时从命令行获取一个线程转储'jps'然后'jstack'并查看阻塞的线程。