Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Из двухзвенки в трехзвенку


Автор: Zverek 30.10.2006, 13:02
Здравствуйте!
Подскажите пожалуйста, что мне лучше сделать в следующей ситуации:
Небольшой оффтопик - вместо Applet'a у меня есть Java WebStart приложение (толстый клиент, используется Swing). Данное приложение работает с БД Oracle (строки выбираются, вставляются, удаляются и т.д.), коннектится напрямую через JDBC.
Появилась необходимость сделать так, чтобы клиент общался с сервером только по Http, соответственно получить прямой коннект к БД не получится, придётся делать трёх звенную структуру приложения. Буду использовать Oracle AS (OC4J контейнер).

Пока только размышляю, как это должно работать, поэтому назрело несколько вопросов:
1. Возможно ли это сделать, если клиент будет запускаться из-под Java WebStart ?
2. Как проще всего организовать работу серверной части нового приложения, какие технологии использывать ?
3. Как должны будут общаться между собой клиентская и серверная части (в виде чего будут передаваться данные) ?

Заранее большое спасибо всем, кто откликнется!

P.S. Я только учусь, поэтому извините меня, если вопросы покажутся глупыми.

Автор: LSD 30.10.2006, 13:14
1. Да. Java WebStart - это полноценное desktop приложение, так что оно может все, что может Java (даже Oracle установить на локальную машину smile )
2. Проще всего наверно веб сервисы, хотя это зависит от объема передаваемых данных и частоты запросов.
3. Вариантов море, надо поподробней о задаче.

Единственное чего не стоит делать, это пытаться пренести приложение "как есть". Т.е. не стоит просто гнать DML через сеть, надо пересмотреть логику работы приложения.

Автор: Zverek 30.10.2006, 14:12
LSD, Спасибо большое, за быстрый ответ!

Цитата(LSD @  30.10.2006,  13:14 Найти цитируемый пост)
2. Проще всего наверно веб сервисы, хотя это зависит от объема передаваемых данных и частоты запросов.

Объём данных небольшой, но зато частота обновлений достаточно большая. Поясню: Перед началом работы данные из БД загружаются в объекты разных классов (в проекте около 15 таблиц, в среднем по 1000 записей). При изменеии, создании, удалении объекта пользователем в процессе работы, приложение вносит соответствующие изменения в БД (выполняет Update, Insert, Delete). В среднем это может происходить раз в 5 секунд для одного пользователя, с числом пользователей затрудняюсь, но скажем их будет 100.

Автор: LSD 30.10.2006, 14:49
Цитата(Zverek @  30.10.2006,  15:12 Найти цитируемый пост)
Объём данных небольшой, но зато частота обновлений достаточно большая. Поясню: Перед началом работы данные из БД загружаются в объекты разных классов (в проекте около 15 таблиц, в среднем по 1000 записей). При изменеии, создании, удалении объекта пользователем в процессе работы, приложение вносит соответствующие изменения в БД (выполняет Update, Insert, Delete). В среднем это может происходить раз в 5 секунд для одного пользователя, с числом пользователей затрудняюсь, но скажем их будет 100.

Думаю тут веб сервисы спокойно справятся. Да и вариантов для HTTP не так много.

Автор: Zverek 1.11.2006, 11:08
Четвёртый день читаю форум, статьи, спецификацию...в голове пока ещё каша, но уже начинает вырисовываться определённая картина.

Появился следующий вопрос. Клиентское и серверное приложение будут написаны на Java, нельзя ли исходя из этого использовать RMI (он вроде бы как побыстрее и попроще WS)? 
В исходных данных по задаче написал, что обязательное условие - передача по Http, но на самом деле просто необходима передача данных по 80 порту (сисадмин не согласен открывать другие порты). Т.е. возможна ли работа с RMI по 80 порту (или там есть ограничение, если не путаю с 1023 порта)?

Автор: tux 1.11.2006, 12:31
Цитата(Zverek @  1.11.2006,  11:08 Найти цитируемый пост)
Клиентское и серверное приложение будут написаны на Java, нельзя ли исходя из этого использовать RMI (он вроде бы как побыстрее и попроще WS)? 

Думаю тебе есть смысл использовать не SOAP, какие-нибудь вебсервисы попроще, например, http://ws.apache.org/xmlrpc/, http://www.caucho.com/hessian/ или http://www.caucho.com/resin-3.0/protocols/burlap.xtp. Работать с ними еще проще чем с RMI, правда первый протокол крайней ограничен в смысле типов данных, а вот Hessian или Burlap думаю очень даже подойдут.

Автор: Zverek 1.11.2006, 13:52
tux, Вот спасибо!
Только что скачал библиотеку Burlap/Hessian, читаю спецификацию по ним.
Уже склонялся к мысли использовать именно их, но ещё сомневался. Но теперь, после Вашего совета, сомнений не осталось, инструмент выбран, буду дерзать.

Подскажите, в каком случае лучше использывать Burlap, а в каком Hessian ?

LSD, tux, Большое спасибо за помощь! И всем форумчанам за множество познавательных тем. smile 

Автор: tux 1.11.2006, 14:01
Hessian точно более эффективен при передаче двоичных данных, а так они практически идентичны.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)