📄 ex8_14.txt
字号:
Example 8.14 POJO Service Activator: OrderServiceActivator.java
// imports. . .
public class OrderServiceActivator implements javax.jms.MessageListener{
// Queue session and receiver: see JMS API for details
private QueueSession orderQueueSession;
private QueueReceiver orderQueueReceiver;
// Note: values should come from property files or
// environment. Hard coded here for illustration only
private String connectionFactoryName =
"PendingOrdersQueueFactory";
private String queueName = "PendingOrders";
// use a service locator to locate administered JMS
// components such as a Queue or a Queue Connection factory
private ServiceLocator serviceLocator;
private QueueConnectionFactory queueConnectionFactory;
private QueueConnection queueConnection;
public OrderServiceActivator(
String connectionFactoryName, String queueName) {
super();
this.connectionFactoryName = connectionFactoryName;
this.queueName = queueName;
startListener();
}
private void startListener() {
try {
serviceLocator = ServiceLocator.getInstance();
queueConnectionFactory =
serviceLocator.getQueueConnectionFactory(
connectionFactoryName);
queueConnection =
queueConnectionFactory.createQueueConnection();
// See JMS API for method usage and arguments
orderQueueSession =
queueConnection.createQueueSession (...);
Queue ordersQueue =
serviceLocator.getQueue(queueName);
orderQueueReceiver =
orderQueueSession.createReceiver(ordersQueue);
orderQueueReceiver.setMessageListener(this);
}
catch (JMSException excp) {
// handle error
}
}
// The JMS API specifies the onMessage method in the
// javax.jms.MessageListener interface.
// This method is asynchronously invoked
// when a message arrives on the Queue being
// listened to by the ServiceActivator.
// See JMS Specification and API for more details.
public void onMessage(Message message) {
try {
// parse Message msg. See JMS API for Message.
// Get the order object from the message
ObjectMessage objectMessage =
(javax.jms.ObjectMessage) message;
Order order = (Order) objectMessage.getObject();
// Use the Business Delegate for Order Processor
// Session Fa鏰de to invoke order processing
OrderProcessorDelegate orderProcessorBD =
new OrderProcessorDelegate();
orderProcessorBD.processOrder(order);
// send any response here...
}
catch (JMSException jmsexcp) {
// Handle JMSExceptions, if any
// Send error response, throw runtime exception
}
catch (Exception excp) {
// Handle any other exceptions
// Send error response, throw runtime exception
}
}
public void close() {
try {
// cleanup before closing
orderQueueReceiver.setMessageListener (null);
orderQueueSession.close();
}
catch(Exception excp) {
// Handle exception - Failure to close
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -