📄 queuesend.java
字号:
//声明这个类定义在包examples.jms.queue中
package examples.jms.queue;
//声明这个类引入的其它类和包
import java.io.*;
import java.util.*;
import javax.transaction.*;
import javax.naming.*;
import javax.jms.*;
/** 这个实例演示怎样建立一个连接并发送消息到一个JMS队列。
* 这个目录中的例子操作同一个JMS队列。一起运行这些类观察消息发送和接收。
* 浏览队列中的消息。这个例子用来发送消息到一个消息队列。
*/
public class QueueSend
{
/**
* 定义JNDI上下文构造器
*/
public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
/**
* 定义JMS上下文构造器
*/
public final static String JMS_FACTORY="weblogic.examples.jms.QueueConnectionFactory";
/**
* 定义消息队列
*/
public final static String QUEUE="weblogic.examples.jms.exampleQueue";
//声明队列连接构造器
private QueueConnectionFactory qconFactory;
//声明队列连接
private QueueConnection qcon;
//声明队列会话
private QueueSession qsession;
//声明队列发送
private QueueSender qsender;
//声明队列
private Queue queue;
//声明文本消息
private TextMessage msg;
/**
* 创建所有发送队列消息所需的对象
*
* @参数 ctx JNDI上下文
* @参数 queueName 队列名
* @异常 NamingException if operation cannot be performed
* @异常 JMSException if JMS fails to initialize due to internal error
*/
public void init(Context ctx, String queueName)
throws NamingException, JMSException
{
//查找连接构造器
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
System.out.println("here");
//创建队列连接
qcon = qconFactory.createQueueConnection();
//创建队列会话
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
//查找消息队列
queue = (Queue) ctx.lookup(queueName);
//创建消息发送
qsender = qsession.createSender(queue);
//创建文本消息
msg = qsession.createTextMessage();
//启动连接
qcon.start();
}
/**
* 发送JMS队列消息
*
* @参数s message 发送的消息
* @异常 JMSException 由于内部错误,JMS 发送消息失败抛出的异常
*/
public void send(String message)
throws JMSException
{
//设置文本
msg.setText(message);
//发送消息
qsender.send(msg);
}
/**
* 关闭JMS对象
* @异常 JMSException 由于内部错误,JMS 发送消息失败抛出的异常
*/
public void close()
throws JMSException
{
qsender.close();
qsession.close();
qcon.close();
}
/** main() 方法
*
* @参数 args WebLogic服务器URL
* @异常 Exception 操作失败
*/
public static void main(String[] args)
throws Exception
{
if (args.length != 1) {
System.out.println("用法: java examples.jms.queue.QueueSend WebLogicURL");
return;
}
//初始化上下文
InitialContext ic = getInitialContext(args[0]);
//实例本类
QueueSend qs = new QueueSend();
//调用初始化方法
qs.init(ic, QUEUE);
//读入文本并发送文本消息
readAndSend(qs);
//关闭
qs.close();
}
//读取文本并发送消息
private static void readAndSend(QueueSend qs)
throws IOException, JMSException
{
//从命令窗口读取文本
BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
String line=null;
boolean quitNow = false;
do {
System.out.print("Enter message (\"quit\" to quit): ");
//读入文本
line = msgStream.readLine();
if (line != null && line.trim().length() != 0) {
//发送
qs.send(line);
System.out.println("JMS Message Sent: "+line+"\n");
quitNow = line.equalsIgnoreCase("quit");
}
} while (! quitNow);
}
//初始化上下文
private static InitialContext getInitialContext(String url)
throws NamingException
{
//上下文属性对象
Hashtable env = new Hashtable();
//设置属性
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, url);
return new InitialContext(env);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -