Java:从与托管相同的域的URL读取流

时间:2012-02-10 16:59:49

标签: java url playframework localhost inputstream

在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相同。

1 个答案:

答案 0 :(得分:1)

我不确定你所谓的'自我引用',但如果你的意思是'服务器'和'客户端'在同一个应用程序中,也许它是线程问题(就像同一个线程试图读取和写入流同时)?我会在你的应用程序运行时从命令行获取一个线程转储'jps'然后'jstack'并查看阻塞的线程。