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>