- Статьи и примеры
- | Использование 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
Очевидно что все посланные сообщения благополучно добрались до адресата.