📄 recvclient.java
字号:
/*
* Created on 2003-7-15
*/
package com.liuyang.jboss.message.jms.topic;
import java.util.Hashtable;
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
*
* @version 1.0 Edit on 2003-7-14 10:01:42
* @author
* <a href="mailto:liuyang@softtouchit.com">刘洋</a>
*
*/
public class RecvClient {
public static void main(String[] args) {
RecvClient client = new RecvClient();
try {
client.setup();
System.out.println(client.recv());
client.stop();
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
}
private boolean receiving = false;
private TopicSession session;
private Topic topic;
private TopicConnection conn;
private TopicSubscriber recv;
public boolean connected = false;
private int timeouts = 0;
private Context iniCtx;
public void setup() throws NamingException, JMSException{
if(!connected){
Properties properties = System.getProperties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.HttpNamingContextFactory");
properties.put(Context.PROVIDER_URL,"http://127.0.0.1:8080/invoker/JNDIFactory");
iniCtx = new InitialContext(properties);
Object tmp = iniCtx.lookup("HTTPConnectionFactory");
TopicConnectionFactory tcf = (TopicConnectionFactory) tmp;
/*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();
topic = (Topic)iniCtx.lookup("topic/topictest");
session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
conn.start();
System.out.println("conn.start()");
recv = session.createSubscriber(topic, "name = 'liuyang'", false);
connected = true;
timeouts = 0;
receiving = false;
}
}
public Object recv() throws JMSException{
if(connected){
if(!receiving){
receiving = true;
Message msg = recv.receive(2000);
System.out.println(msg.getJMSDestination().toString());
if(msg instanceof ObjectMessage){
Object data = ((ObjectMessage)msg).getObject();
receiving = false;
return data;
}else{
receiving = false;
return null;
}
}else{
return null;
}
}else{
try {
this.setup();
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
return recv();
}
}
public void restart(){
if(connected){
try {
this.stop();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public void stop() throws JMSException{
if(connected){
recv.close();
conn.stop();
session.close();
conn.close();
System.out.println("conn.close()");
connected = false;
try {
if(iniCtx!=null)
iniCtx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -