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

Java:从URL读取与托管相同域的流,java,url,playframework,localhost,inputstream,Java,Url,Playframework,Localhost,Inputstream,在Java应用程序中,是否可以在与运行该应用程序的服务器具有相同域的URL上打开流 例如,我正在上演一出戏!框架应用程序位于: http://www.my-domain.com/ 而我试图在其上打开InputStream的URL是: http://www.my-domain.com/public/zipfile.zip 当我试图通过URLopenStream()方法访问inputstream时,应用程序挂起(但仍在运行),并且不再继续(好像它已被锁定) 导致问题的代码行如下所示: Input

在Java应用程序中,是否可以在与运行该应用程序的服务器具有相同域的URL上打开流

例如,我正在上演一出戏!框架应用程序位于:

http://www.my-domain.com/
而我试图在其上打开InputStream的
URL
是:

http://www.my-domain.com/public/zipfile.zip
当我试图通过URL
openStream()
方法访问
inputstream
时,应用程序挂起(但仍在运行),并且不再继续(好像它已被锁定)

导致问题的代码行如下所示:

InputStream is = new BufferedInputStream(url.openStream(), 1024);
额外信息

当从不同域访问URL时,代码按预期工作,例如:

http://www.different-domain.com/public/zipfile.zip

我试过使用
127.0.0.1
,我试过我的网络IP地址,我用
主机
伪造了一个真实的域。所有这些都不起作用,这让我相信这是一个问题,因为url与运行它的应用程序来自同一个域。

我不确定您称之为“自引用”,但如果您的意思是“服务器”和“客户端”在同一个应用程序中,可能是线程问题(就像同一个线程试图同时读取和写入流)?我会在应用程序运行时从命令行获取一个线程转储“jps”,然后是“jstack”,看看哪个线程被阻塞。

你说的“我的代码在打开流时似乎卡住了”是什么意思它没有响应吗?@SajanChandran是的,它实际上只是挂起在那一点上,没有经过它。你的代理设置正确吗?看看它使用127.0.0.1工作吗?@Damokles不,很遗憾,没有-我将在我的问题中添加一些关于+1的更多信息谢谢,这听起来像是一个可能的原因-我会我尝试一下线程转储。通过“自我引用”来澄清(尽管你的解释听起来正确)我的意思是服务器是
http://www.domain.com
并且url是
http://www.domain.com/public/zipfile.zip
Ok,当尝试打印
jps
dump时,我得到一个嵌套异常:
java.net.socketexception网络不可访问dump是可用的,但我不确定我在那里寻找什么。有很多“TIMED_WAITING”和一些“WAITING”线程,但它们主要是“RUNNABLE”线程。据我所知,它们都没有引用同一块内存。不确定-什么时候出现异常?当运行“jps”或“jstack”输出或在你的应用程序中时?:)在jstack输出中,url.openStream()处应该有一个线程包含您的代码-看看它阻塞了什么(如果有),如果我让应用程序运行并调用“jps”转储,则会引发异常。在“jstack”中,它表示“锁定”并引用内存中的某个位置,但它不提供关于这是什么的任何信息。