Как сделать мой Java приложением Swing Клиент-серверное приложение?

Я сделал Java приложением Swing. Теперь я хотел бы сделать это Клиент-серверным приложением. Все клиенты должны быть уведомлены, когда данные по серверу изменяются, таким образом, я не ищу веб-сервис. Клиент-серверное приложение будет запущено на единственной LAN, это - бизнес-приложение. Сервер будет содержать базу данных, JavaDB.

С чего технология и библиотека являются самыми легкими запуститься? Я должен реализовать его с нуля использующие Сокеты, или я должен использовать Java RMI или возможно JMS? Или есть ли другие альтернативы, с которых легче запуститься?

И есть ли какая-либо библиотека сервера, которой я должен пользоваться? Действительно ли Причал является альтернативой?

8
задан Jonas 6 May 2010 в 19:19
поделиться

5 ответов

Mina является хорошим выбором в качестве фреймворка сетевых приложений для создания простого сервера для этих целей - это гораздо лучший вариант, чем использование сырых сокетов.

http://mina.apache.org/

Если вам действительно нужен сервер приложений, то вы можете рассмотреть JBoss. Он также предоставляет компонент remoting (в качестве альтернативы чему-то вроде Mina):

http://www.jboss.org/jbossremoting

Однако у вас, вероятно, не будет большой потребности в Enterprise Java Beans. В большинстве случаев простого POJO более чем достаточно - вы можете связать все это с фреймворком инъекции зависимостей, таким как Guice:

http://code.google.com/p/google-guice/

или Spring. Сохраняйте простоту, не используйте J2EE-сервер, если это действительно не нужно. Надеюсь, это поможет.

2
ответ дан 5 December 2019 в 20:14
поделиться

Это многое из того, что делает J2EE, но это совершенно новая кривая обучения, потому что они заранее решили многие проблемы, с которыми вы столкнетесь, и многие, с которыми вы не столкнетесь, и поэтому добавили много новых технологий.

Но в самой своей основе J2EE отвечает именно на этот вопрос.

2
ответ дан 5 December 2019 в 20:14
поделиться

Я работал в таком проекте. Мы реализовали Swing на стороне клиента и на стороне сервера с J2EE. Мы использовали EJB, компоненты без состояния и компоненты, управляемые сообщениями. Также я участвовал в проекте отслеживания устройств и управления ими. Нашими клиентами были пользователи грузовиков + Swing, и мы использовали Servets + TCP / UDP, инфраструктуру Apache Mina для обработки и сохранения соединений.

1
ответ дан 5 December 2019 в 20:14
поделиться

Я работаю в Java Swing клиент/серверных приложениях почти 3 года. Я бы посоветовал вам перейти на RMI/EJBs. Первоначальное приложение, которое мы разрабатывали, использовало RMI/EJB для связи клиент-сервер с WebLogic в качестве сервера.

Но позже мы обнаружили, что в приложение необходимо включить множество "браузерных" функций, таких как таймаут сессии и т.д. Поэтому мы использовали BrightSide Framework, который оборачивает вызовы RMI через HTTP. Еще одно усовершенствование, которое мы внесли, это замена Weblogic на сервер JBoss с открытым исходным кодом.

Обертка вызовов с помощью HTTP станет очень удобной, и вы сможете сделать свои swing-приложения действительно богатыми. Позже, когда ситуация потребует от вас строгого использования веб-сайта, вы сможете развернуть свой swing с помощью jnlp.

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

0
ответ дан 5 December 2019 в 20:14
поделиться

Учитывая, что у вас уже есть приложение, возможно, самое простое, что можно сделать, это определить интерфейс, который вам нужен между клиентом и сервером, и, прежде всего, рефакторить ваше приложение, чтобы использовать этот интерфейс для общения между back-end и front-end в рамках одного процесса.

Затем вы можете начать разделять это на части. Простым решением было бы разделить это с помощью RMI (поскольку вы общаетесь с Java-объектами и имеете вызовы Java-методов). Spring содержит полезные инструменты для упрощения/автоматизации RMI-обработки интерфейсов.

Для требования уведомления достаточно простой многоадресной рассылки UDP (или широковещательной рассылки).

Обратите внимание, что как только вы разделите приложение на части, у вас возникнут проблемы с поддержанием согласованных представлений данных, управлением своевременными обновлениями, обработкой случаев, когда сервер не работает, возможными проблемами с загрузкой при большом количестве клиентов и т.д. В некотором смысле, разделение приложения на клиент и сервер - это только начало нового архитектурного процесса.

3
ответ дан 5 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: