From Java Message Service
public class Lender {
TopicConnection conn = null;
TopicSession session = null;
Topic ratesTopic = null;
TopicPublisher publisher = null;
public Lender() {
try {
Context ctx = new InitialContext();
TopicConnectionFactory factory =
(TopicConnectionFactory)ctx.lookup("TopicCF");
conn = factory.createTopicConnection();
conn.start();
session =
conn.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
ratesTopic = (Topic)ctx.lookup("jms/Rates");
publisher = session.createPublisher(ratesTopic);
...
} catch (JMSException jmse) {
jmse.printStackTrace();
} catch (NamingException jne) {
jne.printStackTrace();
}
}
...
}
若使用Java EE所提供的Annotation,注入JMS Resource,則不需要在程式中使用InitialContext作JNDI的lookup。
@Stateless
@Remote(Lender.class)
public class LenderBean implements Lender {
@Resource(name="TopicCF") TopicConnectionFactory factory;
@Resource(name="jms/Rates") Topic ratesTopic;
TopicConnection conn = null;
TopicSession session = null;
TopicPublisher publisher = null;
@PostContruct
public void init() {
try {
conn = factory.createTopicConnection();
conn.start();
session =
conn.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
publisher = session.createPublisher(ratesTopic);
...
} catch (JMSException jmse) {
jmse.printStackTrace();
}
}
...
}
Reference: Java Message Service
沒有留言:
張貼留言