Про то как создать и развернуть на сервере приложений JBoss простой message driven bean используя аннотации спецификации EJB3.

В статье приведен пример создания message driven bean, entity bean с использованием аннотаций спецификации EJB3 и простого сервлета без использования аннотаций по причине отсутствия поддержки аннотаций для сервлета в сервере приложений JBoss 4.2

Гламурные технологии врываются в нашу жизнь. Посмотрим на сколько упростилась работа программиста с появлением новой спецификации 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 перестанет ругаться и все успешно скомпилируется.

Страница: