The previous Spring ActiveMQ tutorials, We had learned How to produce and consume JMS messages with String format and configure Explicity ActiveMq ConnectionFactory. But How to send Java object messages to ActiveMQ server? With the tutorial, JavaSampleApproach will show you how to produce/consume Java object messages with Spring JMS ActiveMq for both case: normal Java objects and complex Java objects with Bi-directional relationship.
Related posts:
– How to use Spring JMS with ActiveMQ – JMS Consumer and JMS Producer | Spring Boot
– ActiveMq – Explicitly configure Spring ActiveMq ConnectionFactory with SpringBoot
– How to resolve Json Infinite Recursion problem when working with Jackson
– ActiveMq – How to work with Spring JMS ActiveMq Topic (Publisher-Subcribers pattern) using SpringBoot
I. Sending Java object messages to ActiveMq
1. Jms MessageConverter
We start with a simple model:
public class Company { private String name; public Company(){ } ... } |
Send a Company
object to ActiveMq:
jmsTemplate.convertAndSend(queue, new Company("Apple")); |
-> thrown MessageConversionException
exception:
org.springframework.jms.support.converter.MessageConversionException: Cannot convert object of type [com.javasampleapproach.activemq.model.Company] to JMS message. Supported message payloads are: String, byte array, Map<String,?>, Serializable object. at org.springframework.jms.support.converter.SimpleMessageConverter.toMessage(SimpleMessageConverter.java:78) ~[spring-jms-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.jms.core.JmsTemplate$6.createMessage(JmsTemplate.java:661) ~[spring-jms-4.3.9.RELEASE.jar:4.3.9.RELEASE] ... |
Why?
The default MessageConverter is able to convert only basic types (such as String, Map, Serializable). But Company
is not serializable, so we need to use Jackson to serialize the content to Json in text format.
-> Solution: setup a jacksonJmsMessageConverter bean as below,
@Bean // Serialize message content to json using TextMessage public MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; } |
Then use jacksonJmsMessageConverter
as message converter for {JmsListenerContainerFactory, JmsTemplate}
2. Bi-Directional Java object messages
Now we change models with more complex structure – Bi-Directional relationship:
– Company:
public class Company { private String name; private List<Product> products; public Company(){ } ... |
– Product
public class Product { private String name; private Company company; public Product(){ } ... |
Init a Company
object as below:
Product iphone7 = new Product("Iphone 7"); Product iPadPro = new Product("IPadPro"); List<Product> appleProducts = new ArrayList<Product>(Arrays.asList(iphone7, iPadPro)); Company apple = new Company("Apple", appleProducts); iphone7.setCompany(apple); iPadPro.setCompany(apple); |
Then send a message to ActiveMQ again:
producer.send(apple); |
-> We got an Infinite recursion (StackOverflowError)
exception:
... Caused by: org.springframework.jms.support.converter.MessageConversionException: Could not map JSON object [{"name":"Apple","products":[{"name":"Iphone 7"},{"name":"IPadPro"}]}]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]) at org.springframework.jms.support.converter.MappingJackson2MessageConverter.toMessage(MappingJackson2MessageConverter.java:190) at org.springframework.jms.core.JmsTemplate$6.createMessage(JmsTemplate.java:661) at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:593) at org.springframework.jms.core.JmsTemplate$4.doInJms(JmsTemplate.java:574) at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:484) at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:570) at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:658) at com.javasampleapproach.activemq.jms.producer.JmsProducer.send(JmsProducer.java:19) at com.javasampleapproach.activemq.SpringActiveMqApplication.run(SpringActiveMqApplication.java:44) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:732) ... 32 common frames omitted Caused by: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]->java.util.ArrayList[0]->com.javasampleapproach.activemq.model.Product["company"]->com.javasampleapproach.activemq.model.Company["products"]) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:706) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690) ... |
Why? -> Beacause of the Bidirectional-Relationships between Company object and Product objects.
See more at: Json Infinite Recursion problem
-> Solution:
We have can refer solutions at How to resolve Json Infinite Recursion problem when working with Jackson.
For preserving Bidirectional-Relationships when deserialize Json strings to Java objects, we can choose a solution with @JsonIdentityInfo
, details as below code:
– Company:
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@id", scope = Company.class) public class Company { private String name; private List<Product> products; public Company(){ } |
– Product
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@id", scope = Product.class) public class Product { private String name; private Company company; public Product(){ } |
II. Practice
In the tutorial, We create a Spring JMS ActiveMQ application which can send Bi-Directional Java object messages to ActiveMQ server.
Step to do
– Create SpringBoot project
– Create Bi-Directional Java models
– Configure ActiveMq connection-factory with MessageConverter
– Implement JmsProducer, JmsListener
– Implement Client
– Run and check resutls
1. Create SpringBoot project
Using Spring Tool Suite to create a Spring Starter Project, then add dependencies:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> </dependency> |
2. Create Bi-Directional Java models
Create 2 Java models {Company, Product}:
– Company
package com.javasampleapproach.activemq.model; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.ObjectIdGenerators; @JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@id", scope = Company.class) public class Company { private String name; private List<Product> products; public Company(){ } public Company(String name, List<Product> products){ this.name = name; this.products = products; } // name public String getName() { return name; } public void setName(String name) { this.name = name; } // products public void setProducts(List<Product> products){ this.products = products; } public List<Product> getProducts(){ return this.products; } /** * * Show Detail View */ public String toString(){ JSONObject jsonInfo = new JSONObject(); try { jsonInfo.put("name", this.name); JSONArray productArray = new JSONArray(); if (this.products != null) { this.products.forEach(product -> { JSONObject subJson = new JSONObject(); try { subJson.put("name", product.getName()); } catch (JSONException e) {} productArray.put(subJson); }); } jsonInfo.put("products", productArray); } catch (JSONException e1) {} return jsonInfo.toString(); } } |
– Product
package com.javasampleapproach.activemq.model; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.ObjectIdGenerators; @JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@id", scope = Product.class) public class Product { private String name; private Company company; public Product(){ } public Product(String name){ this.name = name; } public Product(String name, Company company){ this.name = name; this.company = company; } // name public String getName() { return name; } public void setName(String name) { this.name = name; } // products public void setCompany(Company company){ this.company = company; } public Company getCompany(){ return this.company; } } |
3. Configure ActiveMq connection-factory with MessageConverter
– Create a Java configuration file ActiveMqConnectionFactoryConfig with 4 beans {ConnectionFactory, JmsListenerContainerFactory, JmsTemplate, MessageConverter}:
package com.javasampleapproach.activemq.config; import javax.jms.ConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.support.converter.MappingJackson2MessageConverter; import org.springframework.jms.support.converter.MessageConverter; import org.springframework.jms.support.converter.MessageType; @Configuration public class ActiveMqConnectionFactoryConfig { @Value("${jsa.activemq.broker.url}") String brokerUrl; @Value("${jsa.activemq.borker.username}") String userName; @Value("${jsa.activemq.borker.password}") String password; /* * Initial ConnectionFactory */ @Bean public ConnectionFactory connectionFactory(){ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); connectionFactory.setBrokerURL(brokerUrl); connectionFactory.setUserName(userName); connectionFactory.setPassword(password); return connectionFactory; } @Bean // Serialize message content to json using TextMessage public MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; } /* * Used for Receiving Message */ @Bean public JmsListenerContainerFactory<?> jsaFactory(ConnectionFactory connectionFactory, DefaultJmsListenerContainerFactoryConfigurer configurer) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setMessageConverter(jacksonJmsMessageConverter()); configurer.configure(factory, connectionFactory); return factory; } /* * Used for Sending Messages. */ @Bean public JmsTemplate jmsTemplate(){ JmsTemplate template = new JmsTemplate(); template.setMessageConverter(jacksonJmsMessageConverter()); template.setConnectionFactory(connectionFactory()); return template; } } |
Open application.properties file, makes configuration for {brokerUrl, userName, password, queue}:
jsa.activemq.broker.url=tcp://localhost:61616 jsa.activemq.borker.username=admin jsa.activemq.borker.password=admin jsa.activemq.queue=jsa-queue |
4. Implement JmsProducer, JmsListener
Using JmsTemplate which had been setup in ActiveMqConnectionFactoryConfig to create a JmsProducer component for sending Jms messages:
package com.javasampleapproach.activemq.jms.producer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; import com.javasampleapproach.activemq.model.Company; @Component public class JmsProducer { @Autowired JmsTemplate jmsTemplate; @Value("${jsa.activemq.queue}") String queue; public void send(Company company){ jmsTemplate.convertAndSend(queue, company); } } |
Use annotation @JmsListener
and jsaFactory
containerFactory (which had been setup in ActiveMqConnectionFactoryConfig) to create a JmsConsumer component for listenning Jms messages:
package com.javasampleapproach.activemq.jms.consumer; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; import com.javasampleapproach.activemq.model.Company; @Component public class JmsConsumer { @JmsListener(destination = "${jsa.activemq.queue}", containerFactory="jsaFactory") public void receive(Company company){ System.out.println("Recieved Message: " + company); } } |
5. Implement Client
In the main class SpringActiveMqApplication, using CommandLineRunner interface to implemnt a sending client:
package com.javasampleapproach.activemq; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.javasampleapproach.activemq.jms.producer.JmsProducer; import com.javasampleapproach.activemq.model.Company; import com.javasampleapproach.activemq.model.Product; @SpringBootApplication public class SpringActiveMqApplication implements CommandLineRunner{ @Autowired JmsProducer producer; public static void main(String[] args) { SpringApplication.run(SpringActiveMqApplication.class, args); } @Override public void run(String... args) throws Exception { /* * Init Java objects */ Product iphone7 = new Product("Iphone 7"); Product iPadPro = new Product("IPadPro"); List<Product> appleProducts = new ArrayList<Product>(Arrays.asList(iphone7, iPadPro)); Company apple = new Company("Apple", appleProducts); iphone7.setCompany(apple); iPadPro.setCompany(apple); /* * send message to ActiveMQ */ producer.send(apple); } } |
6. Run and check resutls
Start ActiveMQ server with commandline: C:\apache-activemq-5.13.0>.\bin\activemq start
.
Build and Run the SpringBoot application with commandlines: {mvn clean install
, mvn spring-boot:run
}.
-> Results:
– Server’s Log:
Recieved Message: { "name":"Apple", "products":[ { "name":"Iphone 7" }, { "name":"IPadPro" } ] } |
– See Bi-Directional deserialized object with Debug mode:
Great post, helped me a lot!
I have two Spring Boot applications which communicate using JMS Messaging and ActiveMQ. One app sends an object which contains a LocalDateTime property and the other app receives that object. The problem I’m facing is that the MessageConverter in the “Receiver app” can’t deserialize the LocalDateTime property coming from the other application.
This is the exception being throw from the receiver:
java.time.LocalDateTimeCaused by: org.springframework.jms.support.converter.MessageConversionException: Failed to convert JSON message content; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of
(no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Do you have any ideas why that might be happening?