- Статьи и примеры
- | Использование mdb
- | Про то как создать и развернуть на сервере приложений jboss простой message driven bean используя аннотации спецификации ejb3.
Про то как создать и развернуть на сервере приложений JBoss простой message driven bean используя аннотации спецификации EJB3.
Гламурные технологии врываются в нашу жизнь. Посмотрим на сколько упростилась работа программиста с появлением новой спецификации EJB3. Вышла очередная версия сервера приложений JBoss 4.2. Вот ее мы установили и сейчас попытаемся узнать, что нового и интересного в ней появилось.
Установка сервера приложений JBoss
Устанавливаем JBoss 4.2 на компьютер. Мы не станем вникать в тонкости установочного процесса и выбора установочной конфигурации сервера JBoss. Это зависит от операционной системы и функциональных требований. Обратим внимание лишь на настройку источника данных (datasource). В тестовых примерах мы будем использовать базу данных MySQL, поэтому ее настройки в сервере приложений нас и интересуют. Делаем следующие вещи:
1. копируем драйвер базы данных mysql-connector-java-3.1.13-bin.jar в папку C:\jboss\server\default\lib. Найти драйвер для MySQL можно тут
2. копируем файл mysql-ds.xml из C:\jboss\docs\examples\jca в C:\jboss\server\default\deploy и исправляем данные подключения:
<datasources> <local-tx-datasource> <jndi-name>MySQLDS</jndi-name> <connection-url>jdbc:mysql://localhost/jboss</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>jboss</user-name> <security-domain>MySqlDbRealm</security-domain> </local-tx-datasource> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </datasources>
Тут стоит обратить внимание на название источника данных. Используя его мы сможем получить соединение из нашего приложения.
В качестве среды разработки возьмем.. ну допустим Eclipse. И не станем устанавливать умные штепсели для упрощения работы (WTP, Dali и прочие). Мы не ищем легких путей. Напишем простой и надежный Ant скрипт на чем и остановимся.
Пример первый. Использование аннотаций в Message Driven Bean
Итак. Открываем Eclipse и создаем обычный java проект. В нем - один файл SimpleMessageBean.java. Напишем в этом файле следующий код:
package mdbtest; import javax.annotation.Resource; import javax.ejb.MessageDriven; import javax.ejb.MessageDrivenContext; import javax.ejb.ActivationConfigProperty; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; @MessageDriven(activationConfig = {@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/mdbMyTest") }) public class SimpleMessageBean implements MessageListener { //контекст рабочего цикла экземпляра нашего MDB @Resource private MessageDrivenContext mdc; public void onMessage(Message inMessage) { TextMessage msg = null; try { if (inMessage instanceof TextMessage) { msg = (TextMessage) inMessage; System.out.println("MESSAGE BEAN: Message received: " + msg.getText()); } else { System.out.println("Message of wrong type: " + inMessage.getClass().getName()); } } catch (JMSException e) { e.printStackTrace(); mdc.setRollbackOnly(); // откатываем текущую транзакцию } catch (Throwable e) { e.printStackTrace(); } } }
В этом коде аннотациями задается название очереди. Мы избавлены от XML дескрипторов с описаниями очередей. JBoss на лету создает требуемую очередь. Это называется dependency injection. Очередь создается автоматически при развертывании приложения на сервере. Перезапускать JBoss не придется.
Следующим шагом добавим в проект библиотеки, которые нужны для компиляции проекта. Создайте папку lib в вашем проекте. Лучше это делать прямо из среды разработки Eclipse. Скопируйте в нее две библиотеки из JBoss 4.2 jbossall-client.jar и jboss-ejb3x.jar. Если Вы добавили их не через Eclipse, то обновите проект (правой кнопкой Refresh) и новая папка с библиотеками появится в проекте. В свойствах проекта перейдите в меню Java Build Path, на закладку Libraries и нажмите кнопку AddJARs… Выберите эти две библиотеки и подключите их к проекту. После этой операции Eclipse перестанет ругаться и все успешно скомпилируется.