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
沒有留言:
張貼留言