|
Модераторы: LSD, AntonSaburov |
|
Stampede |
|
|||
Гносеолог Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Уведомление (callback) HTTP клиентов о серверных событиях - это вообще давняя и больная тема. Решения существуют, но достаточно нетривиальные. Хотя сама по себе идея достаточно простая: Сервер получает запрос, но использует его на для посылки ответа, а удерживает открытое соединение, чтобы сливать туда какие-то сообщения - в том или ином формате. Например, XML, хотя и не обязательно. При такой схеме уже сервер берет бразды праления в свои руки и становится инициатором взаимодействия. Если, например, такой сервлет зарегистрировать как листенера каких-то серверных событий (например, поступление нового заказа), то он может по каждому событию выдавать в канал описание этого заказа. Задача приемной стороны - слушать канал и интерпретировать поступающие сообщения. В браузере это можно сделать посредством JavaScript объекта HttpXMLRequest (который вовсю используется для разработки AJAX приложений). Если клиент не браузерный, то принцип остается все равно тот же, открывать HTTP соединение, слушать, интерпретировать и предпринимать какие-то действия. Вот тут я собрал ссылки на ряд ресурсов. в которых обсуждаются детали транспорта, серверного и клиентского программирования: More no AJAX and server push; Pushlest: Send events from servlets to DHTML client browsers (статья аж от 2000-го года, но при этом удивительно актуальная!); Ну и там далее по ссылкам. Теперь возвращаясь к теме взаимодействия Java сервера и .NET слиента. Поскольку никакой AXIS или SOAP не поможет организовать уведомление клиента штатными средствами, плюс учитывая, что формат данных, как ты говоришь, достаточно простой, то я бы на твоем месте разработал свой простенький XML-протокольчик, и взяв за основу описанный выше метод коммуникации наваял бы фреймворк для асинхронного двустороннего клиент-серверного взаимодействия. Да, а в части сериализации объектов в XML формат, я бы воспользовался чем-нибудь типа XStream или Burlap/Hessian, тем более что для XStream и Hessian существуют порты на .NET: XStream for .NET Hessian implementatations -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
JUncle |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
Stampede, большое спасибо за такой развернутый ответ! То, что нужно!
(эхх... прав мало - плюс бы дать... ). Это сообщение отредактировал(а) JUncle - 27.4.2006, 21:05 --------------------
class JUncle extends Man // singleton{/*...*/} |
|||
|
||||
tux |
|
|||
Летатель Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
Aazmandius |
|
||||
O_o Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2006 Где: Vancouver Репутация: 3 Всего: 6 |
Вот собрал вышеприведенный пример, долго воевал с различными версиями библиотек, наконец-то нормально скомпилилось и отдеплоилось... Но когда попытался приконнектиться клиентом, получил вот это:
Подскажите в чем дело пожалуйста, эта тема для меня пока еще очень новая, поэтому сам я чего-то недогоняю... Как бы сам смысл ошибки ясен, ему нужен интерфейс в качестве прокси, но что конкретно надо менять в коде? Это происходит в момент обращения собственно к службе в строке
забыл интерфейс проимплементить... Это сообщение отредактировал(а) Aazmandius - 28.8.2006, 16:47 |
||||
|
|||||
Aazmandius |
|
|||
O_o Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2006 Где: Vancouver Репутация: 3 Всего: 6 |
Теперь другая проблема - метод, который должен вернуть строку (наше любимое "Превед, мир!" ) возвращает null И никаких эксепшнов, все чисто...
|
|||
|
||||
Aazmandius |
|
|||
O_o Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2006 Где: Vancouver Репутация: 3 Всего: 6 |
Зато по методу уважаемого Domestic Cat все работает великолепно =) Хотя хотелось бы конечно понять причину этого null в предыдущем случае...
|
|||
|
||||
y3u |
|
|||
Опытный Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
а нет такой же инструкции по работе с вебсервисами на JBoss?
Уж больно там мануал сухой и не везде понятный. Вот, к примеру как сам сервис поднять я разобрался, а вот клиента к нему сделать не получилось (я пробвал RPC) ... -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
onsh76 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 93 Регистрация: 20.11.2005 Где: Beautiful BC Репутация: 4 Всего: 5 |
[QUOTE=Stampede,19.4.2006, 23:02]
Я согласен со Стампидом - веб сервис с Hessian/Burlap имплементацией просто песня, минимум кода и никаких плясок с бубном. Испытал на своем проекте, рекомендую... У меня вопрос к почтенной публике: Коллеги, скажите, кому довелось поработать с Axis2? Меня интересует, тема асинхронных вызовов... Никак AJAX опять прикручивать надо? Нет наверное в мире чудес... Проясните, заранее спасибо! |
|||
|
||||
Stampede |
|
|||
Гносеолог Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
onsh76, а посмотри на проект JBoss Remoting
Судя по описанию, очень толковая и давно напрашивавшаяся штука: универсальный ремоутинг с конфигурируемым транспортом, подтыкаемыми сериализаторами, асинхронными вызовами, коллбаками (callbacks), интеграцией с JMX и т. д. и т. п. Может поставляться изолированно, весит немного. Очень интересно было бы услышать впечатления от использования в реальном проекте. Это сообщение отредактировал(а) Stampede - 2.10.2006, 19:12 |
|||
|
||||
Slanix |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 158 Регистрация: 30.1.2004 Репутация: нет Всего: 1 |
Всем, доброго времечки.А вот такая проблемка.
Есть Web service (AXIS 1.3, doc/literal) и java клиент. Всё прекрасно работает. Потребовалось написать .NET клиента. Хорошо, написали запускаем. В итоге получем. При обращеннии Net клиента SOAP сообщения ходят, но в качестве респонса всегда null (хотя ответ есть). После такого обращения java клиент не работает, а в частности посылает реквест, а в ответ эксепшн: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. Спасает только перезапуск приложения. --------------------
Я буду искать лица Твоего, Господи Пс.26:8 |
|||
|
||||
seth |
|
|||
Опытный Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
В чем отличия между например POJO и AXIOM?
|
|||
|
||||
tux |
|
|||
Летатель Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
seth |
|
|||
Опытный Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Ну а в двух словах?
|
|||
|
||||
tux |
|
|||
Летатель Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
POJO (Plain Old Java Object) - абревиатура, обозначающая простые классы Java, на которые не налагается никаких ограничений - они не реализуют никаких интерфейсов, к ним не предъявляется никаких требований, просто классы и все.
AXIOM - объектная модель представления XML-данных, аналогичная различным DOM-моделям. Разрабатывалась для Axis 2, но сейчас вроде бы отдельный проект. Между POJO и AXIOM нет никакой связи, поэтому об отличиях или сходствах говорить как-то странно. |
|||
|
||||
rrrookie |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 87 Регистрация: 21.6.2006 Где: Rīga Репутация: нет Всего: нет |
Я немного отойду от актуалЬных обсуждений...
У меня вопрос по субй... РеалЬная ситуация с веб сервисами... Например у нас естЬ метод :
Который отбирает из базы персон, и кладёт их в обЬект класса GetPersonByNameResponseDocument , который соодержит в себе атрибут Person[]. Так вот, вопрос в том, как поведут себя веб сервисы, если в базе лежат 1 000 000 персон? Судя по архитектуре все ети персоны будут складыватся в оперативную памятЬ (в массив) и толЬко потом из етого будет создан ХМЛ... Такая ситуация как то обработана? В моём случае как Web Service engine исполЬзуется AXIS2, а веб сервер Tomcat6. |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |