📄 jmstransporter.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 + -