![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Domestic Cat |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Message Driven Beans на jBoss
1. Задача: создать Message Driven Bean (MDB) на jBoss и протестировать его. 2. Я пользовался самой последней версией jBoss и SDK 1.4. 3. Запускаем jBoss. Прежде всего нужно зайти в ${JBOSSHOME}/ Server/default/deploy/jms, и в файле jbossmq-destinations-service.xml в самом первом mbean исправить строку
на
Далее запускаем run.**. 4. Пишем MDB. Структура директории такая:
5. MDB.java
Он предельно прост. Методу onMessage передается TextMessage, из которого извлекается текст и печатается в консоль сервера. 6. ejb-jar.xml
Как видим, бин подписан на топик. 7. jboss.xml
jboss.xml - специфический для провайдера (jBoss) файл, который указывает на топик, на который подписан наш бин. Это тестовый топик, см. jbossmq-destinations-service.xml. 8. Компилим, предварительно установив CLASSPATH (на винде нужен SET): export CLASSPATH=:.:/jboss/client/jboss-j2ee.jar:/jboss/client/jbossall-client.jar Пакуем бин: jar cf MessageBean.jar * 9. Кидаем в директорию server/default/deploy 10. Здесь сервер должен сказать, что бин deployed. 11. Пишем клиента.
Здесь ничего особенного нет. Клиент - паблишер для топика, он идет по стандартной JMS схеме : найти TopicConnectionFactory -> создать соединение -> создать сессию -> создать паблишера для нужного топика -> создать мессагу -> опубликовать ее. параметры jndi - стандартные для jBoss, параметры для нахождения TopicConnectionFactory и topic сидят в файле server/default/deploy/jms/jms-ds.xml. 12. Компилим и запускаем клиента. Сервер выдаст вот что: 10:14:14,957 INFO [STDOUT] [RECEIVED MESSAGE] I'll meet you at midnight, Under the moonlight ЗЫ. Если не работает - сообщайте, мог ошибиться т.к. писал по памяти. -------------------- |
||||||||||||||
|
|||||||||||||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Немного не ясно как клиент общается с сервером. По особым протоколам, на особых портах, которые скоре всего закрыты файрволом или как?
И воторе, можно ли отсылать бинарники, т.е. что то типа BinaryDataMessage? Звыняюсь в ман не полез... ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Вот тут и протокол, и порт ![]()
JMS определяет такие мессаги: TextMessage, BytesMessage, StreamMessage, ObjectMessage, MapMessage -------------------- |
||||||
|
|||||||
jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 1 Всего: 5 |
а где это можно применить, несколько примеров, где это оправдано
--------------------
:w!q |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Там, где применяется MOM - Message Oriented Middleware, короче говоря, везде. Фактичecки, это то жe самое, что и RMI / TCP/IT/ датаграммы, только kоммуникация асинхронна, плюс необязательно чтобы работал получатель - в этом случае сервер сохраняет мессаги и передает получателю впоследствии.
-------------------- |
|||
|
||||
YuG |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 20.2.2006 Репутация: 3 Всего: 4 |
Сделал всё по инструкции...
Вот тут, у клиента:
вот так ругается:
Что не так? Это сообщение отредактировал(а) YuG - 6.3.2006, 17:50 |
||||
|
|||||
Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
А не прощели написать сервлет.Скачать jakarta HttpClient i посилать всё 4то угодно(взависимости от сервлета) ![]() |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Да можно и сервлет не писать. Можно хоть УДП датаграмму. Суть в том, что это: во-первых - асинхронно(ты отправил месседж и всё. Его получат. Не надо ждать обработки сего месседжа чтоб продолжить выполнение кода далее) во-вторых - надёжно, как для асинхронного... То есть... это как бы УДП... только на более высоком уровне абстракции и с большими гарантиями доставки ![]() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
KostenkoSergey |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
а как на счёт передачи не TextMessage ?
Как раз вот HashMap в пропертиесы запихнуть пытаюсь - так в бине property_name есть, а значение null ![]() (HashMap - serializable ж - должно, а не хочет) Исходина ниже . клиент:
бин:
Это сообщение отредактировал(а) KostenkoSergey - 4.9.2006, 18:49 |
||||
|
|||||
KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
В предидущем посте я немного тупанул....
message.setObjectProperty("PARAMS", new HashMap()); - вызывает javax.jms.MessageFormatException: Invalid object type Посмотрел исходину жбосовского SpyMapMessage:
абыдно .... ![]() |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 7 Всего: 54 |
Может и проще. Пока не дойдёт до транзакций, кластеризации, распределения нагрузки, необходимости хранения и/или повторной обработки сообщений, удаленного мониторинга и т. д. и т. п. -------------------- ![]() ![]() |
|||
|
||||
KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
... ещё 5 копеек
![]() Имхо, такие весчи, если подразумевается множественное использование, лучше вынести из метода куда-то или в конструктор класса или по паттерну "Service Locator", и пользовать
Кстати, есть какие-то паттерны, рекомендуемые к использованию в случае MDB ? ![]() |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
РАДИ JMS? Или на основе его, типа: Service Activator etc? -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
А хто его знает ... У мя тут, при большом кол-ве JMS-сендов:
воть и думаю... мож я што то не так делаю ... |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Гм... может при большом количестве коннекшнов? ![]() Кста, сенды у тебя пакетно проходят? Или коммит после каждого сенда? ЗЫ: Заведи отдельную тему - подумкаем ![]() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |