Title: [855] trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jms: ensure don't create consumers multiple times
- Revision
- 855
- Author
- rajdavies
- Date
- 2005-11-16 13:02:03 -0500 (Wed, 16 Nov 2005)
Log Message
ensure don't create consumers multiple times
Modified Paths
Diff
Modified: trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jca/JCAFlow.java (854 => 855)
--- trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jca/JCAFlow.java 2005-11-16 16:14:15 UTC (rev 854)
+++ trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jca/JCAFlow.java 2005-11-16 18:02:03 UTC (rev 855)
@@ -343,37 +343,38 @@
*
* @param event
*/
- public void onEvent(final ComponentPacketEvent event) {
- try {
- String componentName = event.getPacket().getComponentNameSpace().getName();
- if (event.getStatus() == ComponentPacketEvent.ACTIVATED){
- ActiveMQActivationSpec ac = new ActiveMQActivationSpec();
- ac.setDestinationType("javax.jms.Queue");
- ac.setDestination(INBOUND_PREFIX + componentName);
- JCAConnector connector = new JCAConnector();
- connector.setBootstrapContext(getBootstrapContext());
- connector.setActivationSpec(ac);
- connector.setResourceAdapter(resourceAdapter);
- connector.setEndpointFactory(new SingletonEndpointFactory(this, getTransactionManager()));
- connector.afterPropertiesSet();
- connectorMap.put(componentName, connector);
- } else if (event.getStatus() == ComponentPacketEvent.DEACTIVATED){
- JCAConnector connector = (JCAConnector) connectorMap.remove(componentName);
- if (connector != null){
- connector.destroy();
+ public void onEvent(final ComponentPacketEvent event){
+ try{
+ String componentName=event.getPacket().getComponentNameSpace().getName();
+ if(event.getStatus()==ComponentPacketEvent.ACTIVATED){
+ if(!connectorMap.containsKey(componentName)){
+ ActiveMQActivationSpec ac=new ActiveMQActivationSpec();
+ ac.setDestinationType("javax.jms.Queue");
+ ac.setDestination(INBOUND_PREFIX+componentName);
+ JCAConnector connector=new JCAConnector();
+ connector.setBootstrapContext(getBootstrapContext());
+ connector.setActivationSpec(ac);
+ connector.setResourceAdapter(resourceAdapter);
+ connector.setEndpointFactory(new SingletonEndpointFactory(this,getTransactionManager()));
+ connector.afterPropertiesSet();
+ connectorMap.put(componentName,connector);
}
+ }else if(event.getStatus()==ComponentPacketEvent.DEACTIVATED){
+ JCAConnector connector=(JCAConnector) connectorMap.remove(componentName);
+ if(connector!=null){
+ connector.destroy();
+ }
}
// broadcast change to the network
- log.info("broadcast to internal JMS network: " + event);
- jmsTemplate.send(broadcastTopic, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- return session.createObjectMessage(event);
- }
+ log.info("broadcast to internal JMS network: "+event);
+ jmsTemplate.send(broadcastTopic,new MessageCreator(){
+ public Message createMessage(Session session) throws JMSException{
+ return session.createObjectMessage(event);
+ }
});
+ }catch(Exception e){
+ log.error("failed to broadcast to the internal JMS network: "+event,e);
}
- catch (Exception e) {
- log.error("failed to broadcast to the internal JMS network: " + event, e);
- }
}
/**
Modified: trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jms/JMSFlow.java (854 => 855)
--- trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jms/JMSFlow.java 2005-11-16 16:14:15 UTC (rev 854)
+++ trunk/core/src/main/java/org/servicemix/jbi/nmr/flow/jms/JMSFlow.java 2005-11-16 18:02:03 UTC (rev 855)
@@ -275,14 +275,16 @@
public void onEvent(ComponentPacketEvent event) {
try {
String componentName = event.getPacket().getComponentNameSpace().getName();
- if (event.getStatus() == ComponentPacketEvent.ACTIVATED){
- Queue queue = inboundSession.createQueue(INBOUND_PREFIX +componentName);
- MessageConsumer consumer = inboundSession.createConsumer(queue);
- consumer.setMessageListener(this);
- consumerMap.put(componentName,consumer);
- } else if (event.getStatus() == ComponentPacketEvent.DEACTIVATED){
- MessageConsumer consumer = (MessageConsumer) consumerMap.remove(componentName);
- if (consumer != null){
+ if(event.getStatus()==ComponentPacketEvent.ACTIVATED){
+ if(!consumerMap.containsKey(componentName)){
+ Queue queue=inboundSession.createQueue(INBOUND_PREFIX+componentName);
+ MessageConsumer consumer=inboundSession.createConsumer(queue);
+ consumer.setMessageListener(this);
+ consumerMap.put(componentName,consumer);
+ }
+ }else if(event.getStatus()==ComponentPacketEvent.DEACTIVATED){
+ MessageConsumer consumer=(MessageConsumer) consumerMap.remove(componentName);
+ if(consumer!=null){
consumer.close();
}
}