Открытое сокетное соединение на сервлет-контейнере - PullRequest
0 голосов
/ 08 июля 2010

Я написал очень простой сервер, который принимает соединения с сокетом через определенный порт и общается с клиентами через этот сокет.Теперь у меня есть клиентская библиотека, которая прекрасно работает в приложениях J2SE.

Однако, если я пытаюсь использовать эту библиотеку в сервлете (сервлет является клиентом) для связи с сервером, это не работает.К сожалению, нет исключения или что-то, что может мне помочь.Вместо этого при использовании библиотеки просто ничего не происходит.Это вызов метода, в рамках которого сокет открывается, просто блокируется на неопределенное время, пока не устанавливается соединение с сервером.

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

Кстати, контейнер сервлетов - это Tomcat.

Кто-нибудь понял, почему это не работает?

1 Ответ

0 голосов
/ 08 июля 2010

Хорошо, здесь есть актуальная проблема:

Кажется, что разница в поведении между Windows и Linux. Я разработал сервер + lib под Linux, в то время как Tomcat работает на компьютере с Windows.

Помимо прочего, сервер, о котором я вам говорил, выполняет команду через ProcessBuilder. То, что фактически заблокировано на неопределенный срок, было процессом # waitFor.

Это под Windows. Под Linux он работает просто отлично и возвращается, как только процесс завершается. Однако в Windows Process # waitFor возвращается только тогда, когда по какой-то причине я читаю InputStream Процесса.

Извините!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...