一、服务端开发,建立EJb工程, 创建类MesssageDMB.java
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/myqueue") })
public class MesssageDMB implements MessageListener {
public void onMessage(Message msg) {
TextMessage textMsg = (TextMessage) msg;
try {
System.out.println("收到消息:" + textMsg.getText());
} catch (JMSException e) {
System.out.println("获取消息内容失败!");
e.printStackTrace();
}
}
}
二、客户端开发
创建project工程,导入jboss的client的jar包。实现客户端类如下:
public class JmsClient {
public static void main(String[] args) {
try {
InitialContext context = new InitialContext();
//通过JNDI上下文获取QueueConnectionFactory
QueueConnectionFactory factory = (QueueConnectionFactory)context.lookup("ConnectionFactory");
System.out.println("1");
//创建queueConnection
QueueConnection connection = factory.createQueueConnection();
System.out.println("1");
//创建Session
QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
//创建目标队列
Queue queue = (Queue)context.lookup("jms/myqueue");
//创建文本消息
TextMessage msg = session.createTextMessage("hello !!!!!!!!!!!!!");
//创建发送者
MessageProducer producer = (MessageProducer) session.createProducer(queue);
//发送消息
producer.send(msg);
session.close();
connection.close();
context.close();
producer.close();
} catch (Exception e) {
System.out.println("获取上下文失败");
e.printStackTrace();
}
}
}
三.创建 jndi.properties,放在客户端工程的src下。内容如下
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost
四、在jboss服务器中手动配置queue的jndi
在目录如D:\jboss-4.2.1.GA\server\default\deploy中,新建文件jms-service.xml (前缀可以随便写,后面一定要是 -service.xml),文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=myqueue">
<attribute name="JNDIName">jms/myqueue</attribute>
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
此实现正对JBoss4.2 验证过是能运行成功的。JBoss5.0 不能正常运行。lookup("connectionFactory") 执行不下去。没找到原因。