- Статьи и примеры
- | Использование mdb
- | Про то как создать и развернуть на сервере приложений jboss простой message driven bean используя аннотации спецификации ejb3.
- | Про то как создать и развернуть на сервере приложений jboss простой message driven bean используя аннотации спецификации ejb3. страница 2
Про то как создать и развернуть на сервере приложений JBoss простой message driven bean используя аннотации спецификации EJB3. Страница 2
Создадим второй файл build.properties. Вот его содержимое:
# src directory src.dir=src # target compilation directory classes.dir=deploy #deployment folder of the application server deploy.dir=C:/jboss/server/default/deploy file created as target for java doc api=javadoc location of the jboss EJB 3 libraries project.libs=libs #location of compiled classes build.dir=bin
Это файл настроек. Здесь Вы должны подставить свои значения путей и названий папок. Можно пропустить создание этого файла, но не поленитесь, и тогда в дальнейшем Вам не потребуется каждый раз, при изменении путей и переносе приложения, копаться во всех сборочных файлах. Это только в нашем простом примере один несложный Ant скрип. В реальной жизни все может быть намного сложнее.
Третий и последний файл это как раз Ant скрипт для сборки и развертывания примера на сервере.
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <project name="MDBTest" basedir="." default="deploy">
  <property file="build.properties" />
  
  <path id="base.path">
   <fileset dir="${project.libs}">
    <include name="**/*.jar" />
   </fileset>
  </path>
  <target name="clean" description="Delete all generated files">
   <delete dir="${classes.dir}" />
  </target>
  <target name="compile" description="Compiles the Task">
   <mkdir dir="${classes.dir}" />
   <javac srcdir="${src.dir}" destdir="${classes.dir}">
   <classpath>
    <path refid="base.path" />
   </classpath>
   </javac>
  </target>
  <target name="deploy" description="JARs the Task" depends="undeploy, clean, compile">
   <jar destfile="${deploy.dir}/${ant.project.name}.jar">
    <fileset dir="${classes.dir}">
    </fileset>
   </jar>
  </target>
  <target name="undeploy" description="Undeploy jar from server">
   <delete file="${deploy.dir}/${ant.project.name}.jar" />
  </target>
 </project>
Код совсем простой. Каждый без труда сможет понять как что делает этот скрипт.
Мы создаем обычный jar файл ибо пока нет необходимости усложнять задачу.
Запустите сервер приложений JBoss и разверните наш бин. Сервер сразу же должен показать, что он обнаружил наше приложение и готов с ним работать.
13:15:40,406 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.mdb.MDB 13:15:40,406 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=MDBTest.jar,name=SimpleMessageBean,service=EJB3 with dependencies: 13:15:40,421 INFO [EJBContainer] STARTED EJB: mdbtest.SimpleMessageBean ejbName: SimpleMessageBean 13:15:40,437 INFO [EJB3Deployer] Deployed: file:/C:/jboss/server/default/deploy/MDBTest.jar
Все. Бин успешно инсталлирован на сервер и готов к работе. Осталось это проверить. Самый простой способ это создать консольное приложение – клиент для нашего сервера. SimpleMessageClient.
 package mdbtest;
 import java.util.Properties;
 import javax.jms.*;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 public class SimpleMessageClient {
  public static void main(String[] args) {
   Context context;
   Properties properties = new Properties();
   properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
   properties.put("java.naming.factory.url.pkgs", "=org.jboss.naming:org.jnp.interfaces");
   properties.put("java.naming.provider.url", "localhost:1099");
   try {
    context = new InitialContext(properties);
    Queue queue = (Queue) context.lookup("queue/mdbAlexTest");
    QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup("ConnectionFactory");
    QueueConnection cnn = factory.createQueueConnection();
    QueueSession sess = cnn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
    TextMessage msg = sess.createTextMessage("My Message");
    long sent = System.currentTimeMillis();
    msg.setLongProperty("sent", sent);
    QueueSender sender = sess.createSender(queue);
    for (int i = 0; i < 12; i++) {
     msg.setText("This is " + (i + 1) + " message to SimpleMessageBean");
     System.out.println("Sending message: " + msg.getText());
     sender.send(msg);
    }
    sess.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }
Итак мы помним что наш бин создает очередь queue/mdbMyTest и будет слушать все что туда передадут. Соответственно наш клиент пытается подключиться именно к этой очереди и передать в нее сообщения. Нам не надо больше ничего делать. Просто запустите этот файл в eclipse и наблюдайте за консолями клиента и сервера.
Вот что мы получили в итоге:
Вывод консоли клиента:
Sending message: This is 1 message to SimpleMessageBean Sending message: This is 2 message to SimpleMessageBean Sending message: This is 3 message to SimpleMessageBean Sending message: This is 4 message to SimpleMessageBean Sending message: This is 5 message to SimpleMessageBean Sending message: This is 6 message to SimpleMessageBean Sending message: This is 7 message to SimpleMessageBean Sending message: This is 8 message to SimpleMessageBean Sending message: This is 9 message to SimpleMessageBean Sending message: This is 10 message to SimpleMessageBean Sending message: This is 11 message to SimpleMessageBean Sending message: This is 12 message to SimpleMessageBean
Отклик сервера:
13:30:18,250 INFO [STDOUT] MESSAGE BEAN: Message received: This is 1 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 4 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 9 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 6 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 10 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 11 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 7 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 2 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 8 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 12 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 3 message to SimpleMessageBean 13:30:18,265 INFO [STDOUT] MESSAGE BEAN: Message received: This is 5 message to SimpleMessageBean
Очевидно что все посланные сообщения благополучно добрались до адресата.
