\r
package org.commscope.tr069adapter.netconf.boot;\r
\r
+import java.util.Arrays;\r
+import javax.jms.ConnectionFactory;\r
+import org.apache.activemq.ActiveMQConnectionFactory;\r
+import org.apache.activemq.RedeliveryPolicy;\r
+import org.apache.activemq.broker.BrokerService;\r
+import org.apache.activemq.broker.region.policy.RedeliveryPolicyMap;\r
+import org.apache.activemq.command.ActiveMQQueue;\r
import org.commscope.tr069adapter.netconf.server.NetConfServerManagerImpl;\r
+import org.commscope.tr069adapter.netconf.server.utils.NetConfServerConstants;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
import org.springframework.boot.SpringApplication;\r
import org.springframework.boot.autoconfigure.SpringBootApplication;\r
import org.springframework.boot.autoconfigure.domain.EntityScan;\r
+import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer;\r
import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.annotation.Bean;\r
import org.springframework.context.annotation.ComponentScan;\r
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;\r
+import org.springframework.jms.annotation.EnableJms;\r
+import org.springframework.jms.config.DefaultJmsListenerContainerFactory;\r
+import org.springframework.jms.config.JmsListenerContainerFactory;\r
+import org.springframework.jms.listener.MessageListenerContainer;\r
+import org.springframework.jms.support.converter.MappingJackson2MessageConverter;\r
+import org.springframework.jms.support.converter.MessageConverter;\r
+import org.springframework.jms.support.converter.MessageType;\r
import org.springframework.retry.annotation.EnableRetry;\r
\r
+@EnableJms\r
@SpringBootApplication\r
@ComponentScan({"org.commscope.tr069adapter.netconf", "org.opendaylight.netconf.test",\r
"org.commscope.tr069adapter.common"})\r
public static ApplicationContext getApplicationContext() {\r
return appContext;\r
}\r
+\r
+ /*\r
+ * JMS Configuration Defining the connection factories used in the application Setting the\r
+ * Re-delivery configuration goes here\r
+ */\r
+ @Bean\r
+ public BrokerService broker() throws Exception {\r
+ final BrokerService broker = new BrokerService();\r
+ broker.addConnector("tcp://localhost:61616");\r
+ broker.addConnector("vm://localhost");\r
+ broker.setPersistent(false);\r
+ return broker;\r
+ }\r
+\r
+ @Bean\r
+ public ConnectionFactory jmsConnectionFactory() {\r
+ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();\r
+ connectionFactory\r
+ .setTrustedPackages(Arrays.asList("org.commscope", "org.commscope.tr069adapter"));\r
+ connectionFactory.setMaxThreadPoolSize(7);\r
+\r
+ ActiveMQQueue notificationQueue = new ActiveMQQueue(NetConfServerConstants.NETCONF_NOTIFICATION_Q);\r
+ RedeliveryPolicy notificationQueuePolicy = new RedeliveryPolicy();\r
+ notificationQueuePolicy.setInitialRedeliveryDelay(2* 60 * 1000L);\r
+ notificationQueuePolicy.setUseCollisionAvoidance(true);\r
+ notificationQueuePolicy.setRedeliveryDelay(2* 60 * 1000L);\r
+ notificationQueuePolicy.setUseExponentialBackOff(false);\r
+ notificationQueuePolicy.setMaximumRedeliveries(3);\r
+ notificationQueuePolicy.setDestination(notificationQueue);\r
+\r
+ RedeliveryPolicyMap rdMap = connectionFactory.getRedeliveryPolicyMap();\r
+ rdMap.put(notificationQueue, notificationQueuePolicy);\r
+ return connectionFactory;\r
+ }\r
+\r
+ @Bean\r
+ public JmsListenerContainerFactory<MessageListenerContainer> netConfNotificationCF(\r
+ ConnectionFactory connectionFactory,\r
+ DefaultJmsListenerContainerFactoryConfigurer configurer) {\r
+ return handleJMSCommonConfiguration(connectionFactory, configurer);\r
+ }\r
+\r
+ public JmsListenerContainerFactory handleJMSCommonConfiguration(\r
+ ConnectionFactory connectionFactory,\r
+ DefaultJmsListenerContainerFactoryConfigurer configurer) {\r
+ DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();\r
+ configurer.configure(factory, connectionFactory);\r
+ return factory;\r
+ }\r
+\r
+ @Bean\r
+ public MessageConverter jacksonJmsMessageConverter() {\r
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();\r
+ converter.setTargetType(MessageType.TEXT);\r
+ converter.setTypeIdPropertyName("_type");\r
+ return converter;\r
+ }\r
}\r