⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 topicsend.java

📁 weblogic应用全实例
💻 JAVA
字号:
//声明本类在包examples.jms中
package examples.jms.topic;
//本类需要导入的其他类或包
//Java 基础类库中的类
import java.io.*;
import java.util.*;
//Java扩展类库中的包,依次是名称服务器类和Java消息包
import javax.naming.*;
import javax.jms.*;

/**
 * 这个实例描述怎样和消息服务器上的一个消息主题建立连接,以及怎样发送这个
 * 主题的消息。创建一个消息主题连接和发送消息,可以分为三个步骤,在类TopicSend中,
 * 这三个步骤封装成了三个方法,在main方法中依次调用。
 */
public class TopicSend
{
/**
 * 定义JNDI构造器
 */

  public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
/**
 * 定义JMS连接器
 */
  public final static String JMS_FACTORY="weblogic.examples.jms.TopicConnectionFactory";
/**
 * 定义主题
 */
  public final static String TOPIC="weblogic.examples.jms.exampleTopic";
  //声明主题消息连接器变量
  protected TopicConnectionFactory tconFactory;
  //声明主题消息连接变量
  protected TopicConnection tcon;
  //声明主题消息会话器变量
  protected TopicSession tsession;
  //声明主题消息发布器变量
  protected TopicPublisher tpublisher;
  //声明主题消息变量
  protected Topic topic;
  //声明文本主题消息变量
  protected TextMessage msg;

  /**
   * 创建发送主体消息相关的对象
   * 
   * @参数 ctx JNDI 上下文
   * @参数 topicName 主题名
   * @异常 NamingExcpetion JNDI异常
   * @异常 JMSException if JMS异常
   *
   */
  public void init(Context ctx, String topicName)
       throws NamingException, JMSException
  {
    //消息上下文从JNDI服务中寻找到主题连接构造器
    tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
    //建立主题连接
    tcon = tconFactory.createTopicConnection();
    //创建主题会话
    tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    //消息上下文从JNDI服务中寻找到主题
    topic = (Topic) ctx.lookup(topicName);
    //在主体会话中创建主题发布
    tpublisher = tsession.createPublisher(topic);
    //在主体会话中创建创建文本消息
    msg = tsession.createTextMessage();
    //启动连接
    tcon.start();
  }

  /**
   * 向JMS topic发送消息
   *
   * @参数 message 发送的消息
   * @异常 JMSException JMS 异常
   *
   */
  public void send(String message)
       throws JMSException
  {
    //为文本消息设定文本
    msg.setText(message);
    //发布文本消息
    tpublisher.publish(msg);
  }

  /**
   * 关闭所有JMS 对象
   *
   * @异常 JMSException 关闭对象错误跑出的JMS异常
   */
  public void close()
       throws JMSException
  {
    //关闭主题消息发布对象
    tpublisher.close();
    //关闭主题消息会话对象
    tsession.close();
    //关闭主题消息连接对象
    tcon.close();
  }

/**
  * 主方法
  *
  * @参数 args 消息服务器的 URL
  * @异常 操作失败产生的异常
  */
  public static void main(String[] args)
       throws Exception 
  {
    //运行这个程序,给出应用服务器的URL作为命令行参数
    //如果没有给出URL的命令行参数,打印出用法提示。	
    if (args.length != 1) {
      System.out.println("用法: java examples.jms.topic.TopicSend WebLogicURL");
      return;
    }
    //创建初始化上下文实例
    InitialContext ic = getInitialContext(args[0]);
    //声明本类的一个实例
    TopicSend ts = new TopicSend();
    //建立给定主题的消息服务器连接
    ts.init(ic, TOPIC);
    //从键盘输入读取文本并作为消息发送到服务器
    readAndSend(ts);
    ts.close();
  }
/**
  * 从键盘读取消息,发送消息
  *
  * @参数 ts TopicSend
  * @异常 IOException 读写操作错误抛出的异常
  * @异常 JMSException JMS内部错误抛出的异常
  */

  protected static void readAndSend(TopicSend ts) 
       throws IOException, JMSException
  {
    //创建命令行输入流	
    BufferedReader msgStream = new BufferedReader (new InputStreamReader(System.in));
    String line=null;
    do {
    	System.out.print("Enter message (\"quit\" to quit): ");
    	//从键盘输入读入一行文本。
      line = msgStream.readLine();
      if (line != null && line.trim().length() != 0) {
      	//发送文本
        ts.send(line);
        System.out.println("JMS Message Sent: "+line+"\n");
      }
    } while (line != null && ! line.equalsIgnoreCase("quit"));

  }
/**
  * 得到初始化的JNDI上下文
  *
  * @参数  url 消息服务器
  * @异常  NamingException JNDI错误抛出的异常
  */
  protected 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);
    env.put("weblogic.jndi.createIntermediateContexts", "true");
    //构造InitialContext实例
    return new InitialContext(env);
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -