2012-02-23 5 views
2

Мне нужно реализовать TCP-сервер с веб-интерфейсом, включенным для управления.Приложение Java EE: TCP-сервер + веб-интерфейс

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

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

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

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

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

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

+0

Почему вы хотите сделать «простой» интерфейс управления таким сложным, особенно если у вас сложный график? Может быть, простой старый JSP + HTML - это вариант, который вы должны рассмотреть? – home

+0

Согласен. Я предложил то, что я знаю как «идеальный», но, действительно, любая полезная вещь в этом вопросе поможет мне. Кроме того, вещь JSF + Richfaces объясняется коэффициентом удобства использования. Мои навыки работы с интерфейсом почти нулевые, поэтому я ожидаю использовать некоторые готовые API-интерфейсы ... –

+0

Согласитесь также. IMHO проще создать простой JSP + HTML UI, особенно если вы не знакомы с «современными» технологиями пользовательского интерфейса. Это просто менее сложно и не так много, чтобы учиться - компромисс заключается в том, что это не то, что нужно ... – home

ответ

2

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

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

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

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

Смежные вопросы