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

📄 jmstransporter.java

📁 精通Jboss——Ejb和Web Services开发精解的随书源代码
💻 JAVA
字号:
/**
 * JmsTransporter.java Created on 2003-12-11
 *
 */
package com.liuyang.xmessenger.impl;

import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;

import com.liuyang.xmessenger.Listener;
import com.liuyang.xmessenger.Message;
import com.liuyang.xmessenger.Status;
import com.liuyang.xmessenger.Transporter;

/**
 * @author liuyang
 *
 */
public class JmsTransporter implements Transporter {

	private TopicConnection  conn = null;
	private TopicSession session = null;
	private Topic topic = null;
	private TopicPublisher publisher = null;
	Listener listener = null; 
	private Status status = new Status();

	public boolean isConnected(){
		return status.isStarted();
	}
	/* (non-Javadoc)
	 * @see com.liuyang.xmessenger.Transporter#connect()
	 */
	public Listener connect(String url) {
		try {
			Hashtable env = new Hashtable();
			env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
			env.put(Context.PROVIDER_URL,"localhost");
			Context iniCtx = new InitialContext(env);
			Object tmp = iniCtx.lookup("ConnectionFactory");
			TopicConnectionFactory tcf = (TopicConnectionFactory) tmp;
			conn = tcf.createTopicConnection();
			session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
			topic = session.createTopic(url);
			publisher = session.createPublisher(topic);	
		} catch (Exception e) {
			e.printStackTrace();
		}
		status.start();
		listener = new JmsListener(session,topic,conn);
		return listener;
	}

	/* (non-Javadoc)
	 * @see com.liuyang.xmessenger.Transporter#disconnect()
	 */
	public void disconnect() {
		if(isConnected()){
			try {
				publisher.close();
				conn.stop();
				session.close();
				conn.close();	
				status.shutdown();		
			} catch (JMSException e) {
				e.printStackTrace();
			}
		}
	}
	/* (non-Javadoc)
	 * @see com.liuyang.xmessenger.Transporter#send(com.liuyang.xmessenger.Message)
	 */
	public void sendMessage(Message message) {
		try {
			if(isConnected()){
				TextMessage textmsg = session.createTextMessage(message.getContent());
				publisher.publish(textmsg);			
			}else{
				System.out.println("还没上线呢!");
			}
		} catch (JMSException e) {
			e.printStackTrace();
		}
		
	}

}

⌨️ 快捷键说明

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