Как создать сервлет, который будет прослушивать определенный порт и принимать соединения TCP (не https) - PullRequest
4 голосов
/ 07 декабря 2010

Мне нужно создать сервлет, который будет прослушивать какой-то определенный порт (например, serverSocket.accept ()), порождать новый поток (как обычный сервлет) и передавать сокет (или просто входящий поток и выходной поток) в мой код.это соединение не имеет ничего общего с http.Мне нужно читать и записывать двоичные данные в открытое соединение.

Возможно ли это с Tomcat?С чего начать?Я искал примеры GenericSocket, но я вижу, что сервлет, наследующий от GenericSocket, все еще должен быть настроен в web.xml с некоторым шаблоном url - но это зависит от http.

Ответы [ 4 ]

4 голосов
/ 22 мая 2011

Когда сервлеты были впервые представлены в Java много-много лет назад, одной из лучших книг по программированию сервлетов было программирование сервлетов Java Джейсона Хантера (изданное OReilly). Книга сопровождалась загружаемыми примерами исходного кода, которые включали в себя то, что называется классом DaemonHttpServlet, который вы можете создать в подклассе именно для того, о чем вы спрашиваете.

См. Эту ссылку для исходного кода: http://java.codefetch.com/example/qg/src/com/oreilly/servlet/DaemonHttpServlet.java

Существует также сервлет, который также выступает в качестве сервера RMI.

Я понимаю, почему кто-то видит полезность использования сервлетов таким образом; если ваше основное приложение представляет собой веб-приложение на основе HTTP, но для какой-то меньшей части вашего приложения требуется, чтобы вы представляли интерфейс RMI или какой-либо пользовательский интерфейс через необработанные сокеты, то их реализация в виде сервлетов облегчила бы чистое развертывание приложения как простого один файл .war или .ear.

Надеюсь, это поможет.

Обновление: некоторые быстрые поиски в Google показывают следующее:

Так что при использовании HTML5 WebSockets может показаться, что использование сервлетов для работы с необработанными сокетами, не относящимися к http (s), в конце концов не выглядит таким нестандартным вариантом использования.

1 голос
/ 07 декабря 2010

Вы можете сделать все это, просто напишите код, но зачем вам часть сервлета? или Tomcat?

0 голосов
/ 07 декабря 2010

Я хотел использовать некоторый контейнер сервлетов (например, Tomcat), потому что я тоже буду использовать WebServices (в качестве клиента и сервера).

0 голосов
/ 07 декабря 2010

Обязательно проверьте сервлет для реализации сокетного соединения .То, что вы пытаетесь сделать, нестандартно.

...