Java: чтение потока с URL с тем же доменом, что и хостинг - PullRequest
0 голосов
/ 10 февраля 2012

В приложении Java можно ли открыть поток по URL-адресу, который имеет тот же домен, что и сервер, на котором выполняется приложение?

Например, я запускаю Play!Приложение Framework на:

http://www.my-domain.com/

И URL, на котором я пытаюсь открыть InputStream:

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

Когда я пытаюсь получить доступ к inputstream через URL openStream() метод, приложение зависает (но все еще работает) и больше не работает (как будто оно заблокировано).

Строка кода, вызывающая проблему, выглядит следующим образом:

InputStream is = new BufferedInputStream(url.openStream(), 1024);

Дополнительная информация

Код работает должным образом при доступе к URL-адресу из другого домена, например:

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

Я пытался использовать 127.0.0.1, Я попробовал свой сетевой IP-адрес и подделал реальный домен, используя hosts.Ничто из этого не сработало, поэтому я считаю, что это проблема URL-адреса, на который ссылаются из того же домена, что и приложение, в котором он запущен.

1 Ответ

1 голос
/ 10 февраля 2012

Я не уверен, что вы называете «самоссылкой», но если вы имеете в виду, что «сервер» и «клиент» находятся в одном приложении, возможно, это проблема многопоточности (например, тот же поток пытается читать и записывать в потокв то же время)?Я бы взял дамп потока 'jps', затем 'jstack' из командной строки, пока ваше приложение работает, и посмотрел, какой поток блокирует.

...