发送消息示例:
import javax.jms.*;
import javax.naming.*;
import java.util.Properties;
public class MesssageSender {
public void sendMessage() throws NamingException, JMSException {
//定义WebLogic默认连接工厂的JNDI
final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory";
//获取JNDI服务所需的Context
Context context = getInitialContext();
//通过JNDI查找获取连接工厂
ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(CONNECTION_FACTORY_JNDI);
//通过JNDI查找获取消息目的
Destination destination = (Destination)context.lookup("MessageQueue");
//连接工厂创建连接
Connection connection = connectionFactory.createConnection();
//JMS连接创建JMS会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//JMS会话创建消息生产者
MessageProducer sender = session.createProducer(destination);
//设置消息生产者生产出来的消息的传递模式、有效时间。
sender.setDeliveryMode(DeliveryMode.PERSISTENT);
sender.setTimeToLive(20000);
//通过JMS会话创建一个文本消息
TextMessage message = session.createTextMessage();
//message.setStringProperty("ConType","txt");
message.setText("Hello");
sender.send(message);
session.close();
connection.close();
}
private Context getInitialContext() {
final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
final String SERVER_URL = "t3://localhost:7001";
Context context = null;
try {
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
properties.put(Context.PROVIDER_URL , SERVER_URL);
context = new InitialContext(properties);
}
catch (NamingException exception) {
System.err.println("不能连接WebLogic Server在:" + SERVER_URL);
ne.printStackTrace();
}
}
public static void main(String[] args) {
MessageSender messageSender = new MessageSender();
messageSender.sendMessage();
}
}
消息同步接收示例:
import javax.jms.*;
import javax.naming.*;
import java.util.Properties;
public class SyncConsumer {
public void receiveMessage()
throws JMSException , NamingException {
//定义WebLogic默认连接工厂的JNDI
final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory";
//获取JNDI服务所需的Context
Context context = getInitialContext();
//通过JNDI查找获取连接工厂
ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(CONNECTION_FACTORY_JNDI);
//通过JNDI查找获取消息目的
Destination destination = (Destination)context.lookup("MessageQueue");
//连接工厂创建连接
Connection connection = connectionFactory.createConnection();
//启动JMS连接,让它开始传输JMS消息
connection.start();
//JMS连接创建JMS会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//JMS会话创建消息消费者
MessageConsumer receiver = session.createConsumer(destination);
//同步接收消息,如果没有接收到消息,该方法会阻塞线程
TextMessage message = (TextMessage)receiver.receive();
System.out.println(message);
System.out.println("同步接收到的消息:" + message.getText());
//关闭资源
session.close();
connection.close();
}
//工具方法,用来获取命名服务的Context对象
private Context getInitialContext() {
final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
final String SERVER_URL = "t3://localhost:7001";
Context context = null;
try {
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY , INIT_FACTORY);
properties.put(Context.PROVIDER_URL , SERVER_URL);
context = new InitialContext(properties);
}
catch(NamingException ne) {
System.err.println("不能连接WebLogic Server在:"
+ SERVER_URL);
ne.printStackTrace();
}
return context;
}
public static void main(String[] args)
throws Exception {
SyncConsumer mp = new SyncConsumer();
mp.receiveMessage();
}
}
消息异步接受示例:
import javax.jms.*; import javax.naming.*; import java.util.Properties; public class AsyncConsumer implements MessageListener { public AsyncConsumer()throws NamingException ,JMSException , InterruptedException { //定义WebLogic默认连接工厂的JNDI final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory"; //获取JNDI服务所需的Context Context context = getInitialContext(); //通过JNDI查找获取连接工厂 ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(CONNECTION_FACTORY_JNDI); //通过JNDI查找获取消息目的 Destination destination = (Destination)context.lookup("MessageQueue"); //连接工厂创建连接 Connection connection = connectionFactory.createConnection(); //启动JMS连接,让它开始传输JMS消息 connection.start(); //JMS连接创建JMS会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //JMS会话创建消息消费者 MessageConsumer receiver = session.createConsumer(destination); //为JMS消息消费者绑定消息监听器 receiver.setMessageListener(this); //程序暂停20s,在此期间内以异步方式接收消息 Thread.sleep(20000); //关闭资源 session.close(); connection.close(); } //实现消息监听器必须实现的方法。 public void onMessage(Message m) { TextMessage message = (TextMessage)m; System.out.println(message); try { System.out.println("异步接收的消息:" + message.getText()); } catch (JMSException ex) { ex.printStackTrace(); } } //工具方法,用来获取命名服务的Context对象 private Context getInitialContext() { final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory"; final String SERVER_URL = "t3://localhost:7001"; Context context = null; try { Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY , INIT_FACTORY); properties.put(Context.PROVIDER_URL , SERVER_URL); context = new InitialContext(properties); } catch(NamingException ne) { System.err.println("不能连接WebLogic Server在:" + SERVER_URL); ne.printStackTrace(); } return context; } public static void main(String[] args) throws Exception { AsyncConsumer consumer = new AsyncConsumer(); } }