Spring Jms ActiveMq – How to send Java object messages to ActiveMQ server (specially with Bi-Directional relationship Java objects)

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, 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 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 appleProducts = new ArrayList(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 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.

spring activemq java object message - architecture ws

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

spring activemq java object message - project structure

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 products;
	
    public Company(){
    }
    
    public Company(String name, List 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 products){
    	this.products = products;
    }
    
    public List 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 appleProducts = new ArrayList(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"
      }
   ]
}

spring activemq java object message - activemq log

– See Bi-Directional deserialized object with Debug mode:

spring activemq java object message - bi-directional relationship with debug mode

III. Sourcecode

SpringActiveMQ

8 thoughts on “Spring Jms ActiveMq – How to send Java object messages to ActiveMQ server (specially with Bi-Directional relationship Java objects)”

  1. 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:
    “`
    Caused 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 `java.time.LocalDateTime` (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?

  2. May I simply say what a relief to discover an individual who really
    knows what they are discussing on the net. You actually understand how to bring an issue to light and make it important.

    More and more people really need to look at this and understand this side
    of your story. I was surprised you aren’t more popular given that you definitely have the gift.

  3. Color-changing swimshorts

    Dive into the ocean and your swimshorts suddenly change color! These swimshorts ara AMAZING!

    Hurry! 50% Off Worldwide For Limited Time Only!

    Get it here: coolshorts.online

    Thank You,

    Phillipp

  4. Hi there

    You need a pair of Quick Dry Beach Shoes, going out shoes, going OUT OUT shoes, trainers, a spare pair of trainers in case it rains…

    Act Now And Receive A Special Discount For Our Quick Dry Beach Shoes!

    Get Yours Here: tonature.online

    Best,

    Blondell

  5. Write more, thats all I have to say. Literally, it seems as
    though you relied on the video to make your point.
    You obviously know what youre talking about, why waste your intelligence on just posting
    videos to your site when you could be giving us something informative to read?

  6. Hi

    CAREDOGBEST™ – Personalized Dog Harness. All sizes from XS to XXL. Easy ON/OFF in just 2 seconds. LIFETIME WARRANTY.

    Click here: caredogbest.com

    Sincerely,

    Reuben
    ozenero | Mobile & Web Programming Tutorials

  7. Hey there

    Full Body Resistance Band Kit – The best and cheapest athletic gear available on the market today.
    Do a full body workout from the comfort of your home. You don’t even need a gym anymore!

    Save 50% OFF + FREE Worldwide Shipping
    Shop Now: ametathletics.online

    Best regards,

    Lilliana

Leave a Reply

Your email address will not be published. Required fields are marked *