diff --git a/spring-jms/pom.xml b/spring-jms/pom.xml
new file mode 100644
index 0000000000..8f78469989
--- /dev/null
+++ b/spring-jms/pom.xml
@@ -0,0 +1,57 @@
+
+ 4.0.0
+ com.baeldung
+ spring-jms
+ 0.0.1-SNAPSHOT
+ war
+ spring-jms
+ Introduction to Spring JMS
+
+
+ 4.3.2.RELEASE
+ 5.12.0
+
+
+
+
+
+ org.springframework
+ spring-jms
+ ${springframework.version}
+
+
+
+ org.apache.activemq
+ activemq-all
+ ${activemq.version}
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.2
+
+ 1.7
+ 1.7
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.4
+
+ src/main/webapp
+ spring-jms
+ false
+
+
+
+
+ spring-jms
+
+
\ No newline at end of file
diff --git a/spring-jms/src/com/baeldung/spring/jms/Employee.java b/spring-jms/src/com/baeldung/spring/jms/Employee.java
new file mode 100644
index 0000000000..8b45607b38
--- /dev/null
+++ b/spring-jms/src/com/baeldung/spring/jms/Employee.java
@@ -0,0 +1,19 @@
+package com.baeldung.spring.jms;
+
+public class Employee {
+ private String name;
+ private Integer age;
+ public Employee(String name, Integer age) {
+ this.name = name;
+ this.age = age;
+ }
+ public String getName() {
+ return name;
+ }
+ public Integer getAge() {
+ return age;
+ }
+ public String toString() {
+ return "Person: name(" + name + "), age(" + age + ")";
+ }
+}
diff --git a/spring-jms/src/com/baeldung/spring/jms/SampleJMSExample.java b/spring-jms/src/com/baeldung/spring/jms/SampleJMSExample.java
new file mode 100644
index 0000000000..bdde97b82d
--- /dev/null
+++ b/spring-jms/src/com/baeldung/spring/jms/SampleJMSExample.java
@@ -0,0 +1,17 @@
+package com.baeldung.spring.jms;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.activemq.broker.BrokerFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SampleJMSExample {
+ public static void main(String[] args) throws URISyntaxException, Exception {
+ BrokerService broker = BrokerFactory.createBroker(new URI("broker:(tcp://localhost:61616)"));
+ broker.start();
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
+
+ }
+}
diff --git a/spring-jms/src/com/baeldung/spring/jms/SampleJmsMessageSender.java b/spring-jms/src/com/baeldung/spring/jms/SampleJmsMessageSender.java
new file mode 100644
index 0000000000..e3eccea03e
--- /dev/null
+++ b/spring-jms/src/com/baeldung/spring/jms/SampleJmsMessageSender.java
@@ -0,0 +1,32 @@
+package com.baeldung.spring.jms;
+
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.Queue;
+import javax.jms.Session;
+
+import org.springframework.jms.core.JmsTemplate;
+import org.springframework.jms.core.MessageCreator;
+
+public class SampleJmsMessageSender {
+
+ private JmsTemplate jmsTemplate;
+ private Queue queue;
+
+ public void setConnectionFactory(ConnectionFactory cf) {
+ this.jmsTemplate = new JmsTemplate(cf);
+ }
+
+ public void setQueue(Queue queue) {
+ this.queue = queue;
+ }
+
+ public void simpleSend() {
+ this.jmsTemplate.send(this.queue, new MessageCreator() {
+ public Message createMessage(Session session) throws JMSException {
+ return session.createTextMessage("hello queue world");
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/spring-jms/src/com/baeldung/spring/jms/SampleListener.java b/spring-jms/src/com/baeldung/spring/jms/SampleListener.java
new file mode 100644
index 0000000000..466cac44a0
--- /dev/null
+++ b/spring-jms/src/com/baeldung/spring/jms/SampleListener.java
@@ -0,0 +1,23 @@
+package com.baeldung.spring.jms;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+
+public class SampleListener implements MessageListener {
+
+ private String textMessage;
+
+ public void onMessage(Message message) {
+ if (message instanceof TextMessage) {
+ try {
+ textMessage = ((TextMessage) message).getText();
+ } catch (JMSException ex) {
+ throw new RuntimeException(ex);
+ }
+ } else {
+ throw new IllegalArgumentException("Message Error");
+ }
+ }
+}
\ No newline at end of file
diff --git a/spring-jms/src/com/baeldung/spring/jms/SampleMessageConverter.java b/spring-jms/src/com/baeldung/spring/jms/SampleMessageConverter.java
new file mode 100644
index 0000000000..ff8767c78d
--- /dev/null
+++ b/spring-jms/src/com/baeldung/spring/jms/SampleMessageConverter.java
@@ -0,0 +1,29 @@
+package com.baeldung.spring.jms;
+
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+import javax.jms.Message;
+import javax.jms.Session;
+
+import org.springframework.jms.support.converter.MessageConversionException;
+import org.springframework.jms.support.converter.MessageConverter;
+
+public class SampleMessageConverter implements MessageConverter{
+
+ public Message toMessage(Object object, Session session)
+ throws JMSException, MessageConversionException {
+ Employee person = (Employee) object;
+ MapMessage message = session.createMapMessage();
+ message.setString("name", person.getName());
+ message.setInt("age", person.getAge());
+ return message;
+ }
+
+ public Object fromMessage(Message message) throws JMSException,
+ MessageConversionException {
+ MapMessage mapMessage = (MapMessage) message;
+ Employee person = new Employee(mapMessage.getString("name"), mapMessage.getInt("age"));
+ return person;
+ }
+
+}
diff --git a/spring-jms/src/main/resources/applicationContext.xml b/spring-jms/src/main/resources/applicationContext.xml
new file mode 100644
index 0000000000..c15289763f
--- /dev/null
+++ b/spring-jms/src/main/resources/applicationContext.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file