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