Приложение Java EE: TCP-сервер + веб-интерфейс - PullRequest
3 голосов
/ 23 февраля 2012

Мне нужно реализовать TCP-сервер с веб-интерфейсом для управления.

По сути, tcp-сервер будет прослушивать новые соединения и поддерживать текущие соединения, в то время как веб-интерфейс позволяет мне просматривать информацию об этих соединениях и взаимодействовать с ними (например, отправлять сообщения и просматривать полученные)..

Мои проблемы связаны с интеграцией «TCP-сервера» с веб-приложением.Для полученных сообщений я мог бы просто использовать общую БД, но мне нужно отправлять сообщения одноранговым узлам, подключенным к TCP-серверу.

Моя лучшая ставка в настоящее время на JCA.Некоторые исследования показали мне хороший пример: http://code.google.com/p/jca-sockets. В примере используется компонент, управляемый сообщениями, для обработки сообщений, полученных через порт 9000, выступающих в качестве эхо-сервера.

Я новичок в Java EE6 мир.Я пытаюсь понять, почему в образце так или иначе было сделано (например, почему MDB?).

JCA имеет довольно сложную спецификацию.Поэтому я сначала пытаюсь адаптировать приведенный выше пример, чтобы соединения оставались активными для обмена данными.Мой следующий шаг будет адаптировать его для приема строки через сервлет, чтобы переслать его данному пиру.

Может кто-нибудь помочь мне в этом?

1 Ответ

2 голосов
/ 18 апреля 2016

Ну, во-первых, использование Java EE с TCP - не лучший подход, который вы можете использовать.Если вам просто нужна простая служба TCP с веб-интерфейсом, вам лучше рассмотреть возможность использования Java SE с подключенным веб-контейнером (недоделка работает хорошо).

С другой стороны, если вам нужно, чтобы ваше приложение интегрировалось в существующую JavaEE инфраструктура вашей компании, JCA будет лучшим подходом.Хотя она не предназначена для такого рода вещей, JCA является единственной подсистемой EE, достаточно либеральной для такого управления потоками, которое необходимо для работы сетей TCP.

JCA-сокет, на который вы ссылаетесь выше, не являетсялучший пример приложения JCA.Он использует обычные блокирующие сокеты Java, блокируя поток WorkManager, это не очень эффективно.Теперь все стало намного лучше, и у нас есть Java NIO и Netty для высокоэффективной работы в сети.У меня есть JCA-разъем для TCP-взаимодействий , который может предоставить вам скелет для создания вашего собственного.Не стесняйтесь расширять и вносить свой вклад.

PS О MDB: управляемый сообщениями компонент - это единственный «законный» подход JCA для асинхронной обработки входящих сообщений.Так как TCP асинхронный, вам определенно понадобится один в вашем приложении, чтобы все вещи начали работать.Исходящие передачи данных происходят через различные интерфейсы ConnectionFactory, которые вы внедрите в ваш bean-компонент.Приведенная выше ссылка предоставит вам справочную реализацию ConnectionFactory, а также простое приложение-тестер, использующее подходы обмена сообщениями как для ConnectionFactory, так и для MDB.

...