You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/01/17 18:06:45 UTC

svn commit: r369839 - in /incubator/servicemix/trunk/servicemix-components/src: main/java/org/apache/servicemix/components/jms/ main/java/org/apache/servicemix/components/quartz/ test/java/org/apache/servicemix/components/jms/ test/java/org/apache/serv...

Author: gnodet
Date: Tue Jan 17 09:06:40 2006
New Revision: 369839

URL: http://svn.apache.org/viewcvs?rev=369839&view=rev
Log:
Fix SM-178: quartz and jms components  can not be used on clustered flows

Added:
    incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/jms/JmsBindingClusterTest.java
    incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/quartz/QuartzComponentClusterTest.java
    incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/jms/example-cluster.xml
    incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/quartz/example-cluster.xml
Modified:
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsMarshaler.java
    incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/quartz/DefaultQuartzMarshaler.java

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsMarshaler.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsMarshaler.java?rev=369839&r1=369838&r2=369839&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsMarshaler.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsMarshaler.java Tue Jan 17 09:06:40 2006
@@ -59,7 +59,8 @@
         }
 
         // lets add the message to the NMS
-        normalizedMessage.setProperty("org.apache.servicemix.jms.message", message);
+        // Fix SM-178 : the message exchange is not serializable
+        //normalizedMessage.setProperty("org.apache.servicemix.jms.message", message);
     }
 
     public Message createMessage(NormalizedMessage normalizedMessage, Session session) throws JMSException, TransformerException {

Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/quartz/DefaultQuartzMarshaler.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/quartz/DefaultQuartzMarshaler.java?rev=369839&r1=369838&r2=369839&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/quartz/DefaultQuartzMarshaler.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/quartz/DefaultQuartzMarshaler.java Tue Jan 17 09:06:40 2006
@@ -38,20 +38,17 @@
  * @version $Revision$
  */
 public class DefaultQuartzMarshaler extends MarshalerSupport implements QuartzMarshaler {
-    public static final String CONTEXT_KEY = "org.apache.servicemix.quartz.context";
-    public static final String DETAIL_KEY = "org.apache.servicemix.quartz.detail";
 
     public void populateNormalizedMessage(NormalizedMessage message, JobExecutionContext context) throws JobExecutionException, MessagingException {
-        message.setProperty(CONTEXT_KEY, context);
         JobDetail detail = context.getJobDetail();
-        message.setProperty(DETAIL_KEY, detail);
-
         JobDataMap dataMap = detail.getJobDataMap();
         for (Iterator iter = dataMap.entrySet().iterator(); iter.hasNext(); ) {
             Map.Entry entry = (Map.Entry) iter.next();
             String key = (String) entry.getKey();
-            Object value = entry.getValue();
-            message.setProperty(key, value);
+            if (!key.equals(QuartzComponent.COMPONENT_KEY)) {
+	            Object value = entry.getValue();
+	            message.setProperty(key, value);
+            }
         }
 
         try {

Added: incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/jms/JmsBindingClusterTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/jms/JmsBindingClusterTest.java?rev=369839&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/jms/JmsBindingClusterTest.java (added)
+++ incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/jms/JmsBindingClusterTest.java Tue Jan 17 09:06:40 2006
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.components.jms;
+
+import org.apache.servicemix.tck.TestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.xbean.spring.context.ClassPathXmlApplicationContext;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @version $Revision: 359186 $
+ */
+public class JmsBindingClusterTest extends TestSupport {
+
+    public void testSendMessagesToJmsThenOutofJmsToReceiver() throws Exception {
+        QName service = new QName("http://servicemix.org/cheese/", "myJmsSender");
+
+        assertSendAndReceiveMessages(service);
+    }
+
+    protected AbstractXmlApplicationContext createBeanFactory() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/components/jms/example-cluster.xml");
+    }
+}

Added: incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/quartz/QuartzComponentClusterTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/quartz/QuartzComponentClusterTest.java?rev=369839&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/quartz/QuartzComponentClusterTest.java (added)
+++ incubator/servicemix/trunk/servicemix-components/src/test/java/org/apache/servicemix/components/quartz/QuartzComponentClusterTest.java Tue Jan 17 09:06:40 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.components.quartz;
+
+import org.apache.servicemix.tck.TestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.xbean.spring.context.ClassPathXmlApplicationContext;
+
+/**
+ * @version $Revision: 359186 $
+ */
+public class QuartzComponentClusterTest extends TestSupport {
+
+    public void testSendMessagesToJmsThenOutofJmsToReceiver() throws Exception {
+        assertMessagesReceived();
+    }
+
+    protected AbstractXmlApplicationContext createBeanFactory() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/components/quartz/example-cluster.xml");
+    }
+}
\ No newline at end of file

Added: incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/jms/example-cluster.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/jms/example-cluster.xml?rev=369839&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/jms/example-cluster.xml (added)
+++ incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/jms/example-cluster.xml Tue Jan 17 09:06:40 2006
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0" 
+	   xmlns:foo="http://servicemix.org/cheese/">
+
+  <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean" singleton="true">
+    <property name="config" value="classpath:broker.xml"/>
+  </bean>
+
+  <!-- the JBI container -->
+  <sm:container id="jbi" depends-on="broker" embedded="true" 
+  				flowName="jms?brokerURL=tcp://localhost:61626">
+    <sm:activationSpecs>
+
+      <sm:activationSpec componentName="myJmsSender" service="foo:myJmsSender">
+        <sm:component><bean class="org.apache.servicemix.components.jms.JmsSenderComponent">
+          <property name="template">
+            <bean class="org.springframework.jms.core.JmsTemplate">
+              <property name="connectionFactory">
+                <ref local="jmsFactory"/>
+              </property>
+              <property name="defaultDestinationName" value="test.org.apache.servicemix.example.1"/>
+              <property name="pubSubDomain" value="true"/>
+            </bean>
+          </property>
+        </bean></sm:component>
+      </sm:activationSpec>
+
+      <sm:activationSpec componentName="myJmsReceiver" service="foo:myJmsReceiver" destinationService="foo:receiver">
+        <sm:component><bean class="org.apache.servicemix.components.jms.JmsReceiverComponent">
+          <property name="template">
+            <bean class="org.springframework.jms.core.JmsTemplate">
+              <property name="connectionFactory">
+                <ref local="jmsFactory"/>
+              </property>
+              <property name="defaultDestinationName" value="test.org.apache.servicemix.example.1"/>
+              <property name="pubSubDomain" value="true"/>
+            </bean>
+          </property>
+        </bean></sm:component>
+      </sm:activationSpec>
+
+      <sm:activationSpec componentName="receiver" service="foo:receiver">
+        <sm:component><bean class="org.apache.servicemix.tck.ReceiverComponent"/></sm:component>
+      </sm:activationSpec>
+
+
+      <!-- just to test that we are sending messages, lets trace the messages we receive -->
+      <sm:activationSpec componentName="jmsTrace" service="foo:jmsTrace" destinationService="foo:trace">
+        <sm:component><bean class="org.apache.servicemix.components.jms.JmsReceiverComponent">
+          <property name="template">
+            <bean class="org.springframework.jms.core.JmsTemplate">
+              <property name="connectionFactory">
+                <ref local="jmsFactory"/>
+              </property>
+              <property name="defaultDestinationName" value="test.org.apache.servicemix.example.1"/>
+              <property name="pubSubDomain" value="true"/>
+            </bean>
+          </property>
+        </bean></sm:component>
+      </sm:activationSpec>
+
+      <!--
+      <sm:activationSpec componentName="jmsTrace" service="foo:trace">
+        <sm:component><bean class="org.apache.servicemix.components.util.TraceComponent"/></sm:component>
+      </sm:activationSpec>
+      -->
+
+      <sm:activationSpec componentName="jmsTrace" service="foo:trace">
+        <sm:component><bean class="org.apache.servicemix.components.groovy.GroovyComponent">
+          <property name="disableOutput" value="true"/>
+          <property name="scriptText">
+            <value>
+              <![CDATA[
+log.info "Received message $inMessage with body: $inMessage.bodyText"
+              ]]>
+            </value>
+          </property>
+        </bean></sm:component>
+      </sm:activationSpec>
+    </sm:activationSpecs>
+  </sm:container>
+
+  <bean id="client" class="org.apache.servicemix.client.DefaultServiceMixClient">
+    <constructor-arg ref="jbi"/>
+  </bean>
+
+  <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
+    <property name="connectionFactory">
+      <bean class="org.apache.activemq.ActiveMQConnectionFactory">
+        <property name="brokerURL" value="tcp://localhost:61626" />
+      </bean>
+    </property>
+  </bean>
+
+</beans>

Added: incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/quartz/example-cluster.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/quartz/example-cluster.xml?rev=369839&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/quartz/example-cluster.xml (added)
+++ incubator/servicemix/trunk/servicemix-components/src/test/resources/org/apache/servicemix/components/quartz/example-cluster.xml Tue Jan 17 09:06:40 2006
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0" 
+	   xmlns:my="http://servicemix.org/cheese/">
+
+  <!-- the JBI container -->
+  <sm:container id="jbi" embedded="true" 
+  				flowName="jms?brokerURL=tcp://localhost:61626">
+    <sm:activationSpecs>
+
+      <!-- START SNIPPET: timer -->
+      <sm:activationSpec componentName="timer" service="my:timer" destinationService="my:receiver">
+        <sm:component><bean class="org.apache.servicemix.components.quartz.QuartzComponent">
+          <property name="triggers">
+            <map>
+              <entry>
+                <key>
+                  <bean class="org.quartz.SimpleTrigger">
+                    <property name="repeatInterval" value="200"/>
+                    <property name="repeatCount" value="20"/>
+                  </bean>
+                </key>
+                  <bean class="org.quartz.JobDetail">
+                    <property name="name" value="My Example Job"/>
+                    <property name="group" value="ServiceMix"/>
+                  </bean>
+              </entry>
+            </map>
+          </property>
+        </bean></sm:component>
+      </sm:activationSpec>
+      <!-- END SNIPPET: timer -->
+
+      <sm:activationSpec componentName="receiver" service="my:receiver">
+        <sm:component><bean class="org.apache.servicemix.tck.ReceiverComponent"/></sm:component>
+      </sm:activationSpec>
+    </sm:activationSpecs>
+  </sm:container>
+
+  <bean id="client" class="org.apache.servicemix.client.DefaultServiceMixClient">
+    <constructor-arg ref="jbi"/>
+  </bean>
+
+  <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
+    <property name="connectionFactory">
+      <bean class="org.apache.activemq.ActiveMQConnectionFactory">
+        <property name="brokerURL" value="vm://localhost"/>
+      </bean>
+    </property>
+  </bean>
+
+</beans>