You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2008/12/16 05:05:11 UTC

svn commit: r726940 - in /cxf/branches/2.0.x-fixes/rt/transports/jms/src: main/java/org/apache/cxf/transport/jms/ main/java/org/apache/cxf/transport/jms/spring/ main/resources/schemas/configuration/ test/java/org/apache/cxf/transport/jms/ test/resources/

Author: ningjiang
Date: Mon Dec 15 20:05:10 2008
New Revision: 726940

URL: http://svn.apache.org/viewvc?rev=726940&view=rev
Log:
Merged revisions 726745 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.1.x-fixes

................
  r726745 | dkulp | 2008-12-16 01:57:02 +0800 (Tue, 16 Dec 2008) | 9 lines
  
  Merged revisions 726342 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r726342 | ningjiang | 2008-12-13 22:03:13 -0500 (Sat, 13 Dec 2008) | 1 line
    
    CXF-1943 added the jms transport injection support for JMSDestination
  ........
................

Modified:
    cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
    cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
    cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java
    cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/resources/schemas/configuration/jms.xsd
    cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java
    cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/resources/jms_test_config.xml

Modified: cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java?rev=726940&r1=726939&r2=726940&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java (original)
+++ cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java Mon Dec 15 20:05:10 2008
@@ -31,6 +31,7 @@
 public class JMSConfiguration implements InitializingBean {
     static final boolean DEFAULT_USEJMS11 = false;
     
+    private boolean usingEndpointInfo = true;
     private ConnectionFactory connectionFactory;
     private DestinationResolver destinationResolver;
     private PlatformTransactionManager transactionManager;
@@ -60,6 +61,13 @@
     private String messageType = JMSConstants.TEXT_MESSAGE_TYPE;
     private boolean pubSubDomain;
 
+    public boolean isUsingEndpointInfo() {
+        return this.usingEndpointInfo;
+    }
+    
+    public void setUsingEndpointInfo(boolean usingEndpointInfo) {
+        this.usingEndpointInfo = usingEndpointInfo;
+    }
     public boolean isUseJndi() {
         return useJndi;
     }

Modified: cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java?rev=726940&r1=726939&r2=726940&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java (original)
+++ cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java Mon Dec 15 20:05:10 2008
@@ -33,6 +33,7 @@
 import org.springframework.jms.connection.SingleConnectionFactory;
 import org.springframework.jms.connection.SingleConnectionFactory102;
 import org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter;
+import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.support.destination.JndiDestinationResolver;
 import org.springframework.jndi.JndiTemplate;
 
@@ -87,7 +88,6 @@
     public JMSConfiguration createJMSConfigurationFromEndpointInfo(Bus bus,
                                                                    EndpointInfo endpointInfo,
                                                                    boolean isConduit) {
-        jmsConfig = new JMSConfiguration();
 
         // Retrieve configuration information that was extracted from the WSDL
         address = endpointInfo.getTraversedExtensor(new AddressType(), AddressType.class);
@@ -99,63 +99,68 @@
         serverBehavior = endpointInfo.getTraversedExtensor(new ServerBehaviorPolicyType(),
                                                            ServerBehaviorPolicyType.class);
         String name = endpointInfo.getName().toString() + (isConduit ? ".jms-conduit" : ".jms-destination");
-
+       
         // Try to retrieve configuration information from the spring
         // config. Search for a conduit or destination with name=endpoint name + ".jms-conduit"
         // or ".jms-destination"
+        
         Configurer configurer = bus.getExtension(Configurer.class);
         if (null != configurer) {
             configurer.configureBean(name, this);
         }
-
-        JndiTemplate jt = new JndiTemplate();
-        jt.setEnvironment(JMSOldConfigHolder.getInitialContextEnv(address));
-        boolean pubSubDomain = false;
-        if (address.isSetDestinationStyle()) {
-            pubSubDomain = DestinationStyleType.TOPIC == address.getDestinationStyle();
-        }
-        ConnectionFactory cf = getConnectionFactoryFromJndi(jt, pubSubDomain);
-
-        jmsConfig.setConnectionFactory(cf);
-        jmsConfig.setDurableSubscriptionName(serverBehavior.getDurableSubscriberName());
-        jmsConfig.setExplicitQosEnabled(true);
-        // jmsConfig.setMessageIdEnabled(messageIdEnabled);
-        jmsConfig.setMessageSelector(serverBehavior.getMessageSelector());
-        // jmsConfig.setMessageTimestampEnabled(messageTimestampEnabled);
-        if (runtimePolicy.isSetMessageType()) {
-            jmsConfig.setMessageType(runtimePolicy.getMessageType().value());
-        }
-        // jmsConfig.setOneWay(oneWay);
-        // jmsConfig.setPriority(priority);
-        jmsConfig.setPubSubDomain(pubSubDomain);
-        jmsConfig.setPubSubNoLocal(true);
-        jmsConfig.setReceiveTimeout(clientConfig.getClientReceiveTimeout());
-        jmsConfig.setSubscriptionDurable(serverBehavior.isSetDurableSubscriberName());
-        long timeToLive = isConduit ? clientConfig.getMessageTimeToLive() : serverConfig
-            .getMessageTimeToLive();
-        jmsConfig.setTimeToLive(timeToLive);
-        if (address.isSetUseJms11()) {
-            jmsConfig.setUseJms11(address.isUseJms11());
-        }
-        boolean useJndi = address.isSetJndiDestinationName();
-        jmsConfig.setUseJndi(useJndi);
-        jmsConfig.setSessionTransacted(serverBehavior.isSetTransactional());
-
-        if (useJndi) {
-            // Setup Destination jndi destination resolver
-            final JndiDestinationResolver jndiDestinationResolver = new JndiDestinationResolver();
-            jndiDestinationResolver.setJndiTemplate(jt);
-            jmsConfig.setDestinationResolver(jndiDestinationResolver);
-            jmsConfig.setTargetDestination(address.getJndiDestinationName());
-            jmsConfig.setReplyDestination(address.getJndiReplyDestinationName());
-        } else {
-            // Use the default dynamic destination resolver
-            jmsConfig.setTargetDestination(address.getJmsDestinationName());
-            jmsConfig.setReplyDestination(address.getJmsReplyDestinationName());
+        
+        if (jmsConfig == null) {
+            jmsConfig = new JMSConfiguration();
         }
 
-        jmsConfig.setConnectionFactory(cf);
+        if (jmsConfig.isUsingEndpointInfo()) {
+            JndiTemplate jt = new JndiTemplate();
+            jt.setEnvironment(JMSOldConfigHolder.getInitialContextEnv(address));
+            boolean pubSubDomain = false;
+            if (address.isSetDestinationStyle()) {
+                pubSubDomain = DestinationStyleType.TOPIC == address.getDestinationStyle();
+            }
+            ConnectionFactory cf = getConnectionFactoryFromJndi(jt, pubSubDomain);            
+            jmsConfig.setConnectionFactory(cf);
+        
+            jmsConfig.setDurableSubscriptionName(serverBehavior.getDurableSubscriberName());
+            jmsConfig.setExplicitQosEnabled(true);        
+            jmsConfig.setMessageSelector(serverBehavior.getMessageSelector());        
+            if (isConduit && runtimePolicy.isSetMessageType()) {
+                jmsConfig.setMessageType(runtimePolicy.getMessageType().value());
+            }        
+            jmsConfig.setPubSubDomain(pubSubDomain);
+            jmsConfig.setPubSubNoLocal(true);
+            if (jmsConfig.getReceiveTimeout() == JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT) {
+                jmsConfig.setReceiveTimeout(clientConfig.getClientReceiveTimeout());
+            }            
+            jmsConfig.setSubscriptionDurable(serverBehavior.isSetDurableSubscriberName());       
+            jmsConfig.setDurableSubscriptionName(serverBehavior.getDurableSubscriberName());        
+        
+            long timeToLive = isConduit ? clientConfig.getMessageTimeToLive() : serverConfig
+                .getMessageTimeToLive();
+            jmsConfig.setTimeToLive(timeToLive);
+            if (address.isSetUseJms11()) {                
+                jmsConfig.setUseJms11(address.isUseJms11());        
+            }
+            boolean useJndi = address.isSetJndiDestinationName();
+            jmsConfig.setUseJndi(useJndi);
+        
+            jmsConfig.setSessionTransacted(serverBehavior.isSetTransactional());
 
+            if (useJndi) {
+                // Setup Destination jndi destination resolver
+                final JndiDestinationResolver jndiDestinationResolver = new JndiDestinationResolver();
+                jndiDestinationResolver.setJndiTemplate(jt);
+                jmsConfig.setDestinationResolver(jndiDestinationResolver);
+                jmsConfig.setTargetDestination(address.getJndiDestinationName());
+                jmsConfig.setReplyDestination(address.getJndiReplyDestinationName());
+            } else {
+                // Use the default dynamic destination resolver
+                jmsConfig.setTargetDestination(address.getJmsDestinationName());
+                jmsConfig.setReplyDestination(address.getJmsReplyDestinationName());
+            }
+        }
         return jmsConfig;
     }
 

Modified: cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java?rev=726940&r1=726939&r2=726940&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java (original)
+++ cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java Mon Dec 15 20:05:10 2008
@@ -21,6 +21,8 @@
 import javax.xml.namespace.QName;
 
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
 import org.apache.cxf.transport.jms.AddressType;
@@ -46,6 +48,12 @@
                                  AddressType.class);
         mapElementToJaxbProperty(element, bean, new QName(JMS_NS, "sessionPool"), "sessionPool",
                                  SessionPoolType.class);
+        NodeList el = element.getElementsByTagNameNS(JMS_NS, "jmsConfig-ref");
+
+        if (el.getLength() == 1) {
+            Node el1 = el.item(0);
+            bean.addPropertyReference("jmsConfig", el1.getTextContent());
+        }
     }
 
     @Override

Modified: cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/resources/schemas/configuration/jms.xsd
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/resources/schemas/configuration/jms.xsd?rev=726940&r1=726939&r2=726940&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/resources/schemas/configuration/jms.xsd (original)
+++ cxf/branches/2.0.x-fixes/rt/transports/jms/src/main/resources/schemas/configuration/jms.xsd Mon Dec 15 20:05:10 2008
@@ -39,6 +39,7 @@
                         <xs:element name="runtimePolicy" type="jms:ServerBehaviorPolicyType" minOccurs="0"/>
                         <xs:element name="sessionPool" type="jms:SessionPoolType" minOccurs="0"/>
                         <xs:element name="address" type="jms:AddressType" minOccurs="0"/>
+                        <xs:element name="jmsConfig-ref" type="xs:string" maxOccurs="1" minOccurs="0"/>                    	
                     </xs:sequence>
                     <xs:attributeGroup ref="cxf-beans:beanAttributes"/>
                 </xs:extension>
@@ -59,9 +60,7 @@
                     		type="jms:SessionPoolType" minOccurs="0" />
                     	<xs:element name="address"
                     		type="jms:AddressType" minOccurs="0" />
-                    	<xs:element name="jmsConfig-ref"
-                    		type="xs:string" maxOccurs="1" minOccurs="0">
-                    	</xs:element>
+                    	<xs:element name="jmsConfig-ref" type="xs:string" maxOccurs="1" minOccurs="0"/>                    	
                     </xs:sequence>
                     <xs:attributeGroup ref="cxf-beans:beanAttributes"/>
                 </xs:extension>

Modified: cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java?rev=726940&r1=726939&r2=726940&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java (original)
+++ cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java Mon Dec 15 20:05:10 2008
@@ -25,6 +25,7 @@
 
 import javax.jms.DeliveryMode;
 
+import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.message.Exchange;
@@ -104,8 +105,8 @@
                          "/wsdl/jms_test_no_addr.wsdl",
                          "HelloWorldQueueBinMsgService",
                          "HelloWorldQueueBinMsgPort");
-        JMSDestination destination = setupJMSDestination(false);
-        JMSConfiguration jmsConfig = destination.getJmsConfig();
+        JMSDestination destination = setupJMSDestination(false);        
+        JMSConfiguration jmsConfig = destination.getJmsConfig();        
         //JmsTemplate jmsTemplate = destination.getJmsTemplate();
         //AbstractMessageListenerContainer jmsListener = destination.getJmsListener();
         assertEquals("Can't get the right ServerConfig's MessageTimeToLive ", 500L, jmsConfig
@@ -118,6 +119,21 @@
         // .getConnectionPassword());
         assertEquals("Can't get the right DurableSubscriberName", "cxf_subscriber", jmsConfig
             .getDurableSubscriptionName());
+        
+        /*setupServiceInfo("http://cxf.apache.org/hello_world_jms", "/wsdl/jms_test.wsdl",
+                         "HelloWorldQueueBinMsgService", "HelloWorldQueueBinMsgPort");
+        destination = setupJMSDestination(false);
+        jmsConfig = destination.getJmsConfig();*/
+        assertEquals("The concurrentConsumer should be set", jmsConfig.getConcurrentConsumers(), 3);
+        assertEquals("The maxConcurrentConsumer should be set", jmsConfig.getMaxConcurrentConsumers(), 5);
+        assertNotNull("The connectionFactory should not be null", jmsConfig.getConnectionFactory());
+        assertTrue("Should get the instance of ActiveMQConnectionFactory", 
+                   jmsConfig.getConnectionFactory() instanceof ActiveMQConnectionFactory);
+        ActiveMQConnectionFactory cf = (ActiveMQConnectionFactory)jmsConfig.getConnectionFactory();
+        assertEquals("The borker URL is wrong", cf.getBrokerURL(), "tcp://localhost:61500");
+        assertEquals("Get a wrong TargetDestination", jmsConfig.getTargetDestination(), "queue:test");
+        assertEquals("Get the wrong pubSubDomain value", jmsConfig.isPubSubDomain(), false);
+        
         BusFactory.setDefaultBus(null);
 
     }

Modified: cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/resources/jms_test_config.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/resources/jms_test_config.xml?rev=726940&r1=726939&r2=726940&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/resources/jms_test_config.xml (original)
+++ cxf/branches/2.0.x-fixes/rt/transports/jms/src/test/resources/jms_test_config.xml Mon Dec 15 20:05:10 2008
@@ -46,15 +46,7 @@
       <jms:jmsConfig-ref>jmsConf1</jms:jmsConfig-ref>
     </jms:conduit>
     
-    <jms:destination name="{http://cxf.apache.org/jms_conf_test}HelloWorldQueueBinMsgPort.jms-destination">
-      <jms:serverConfig
-        messageTimeToLive="500"
-        durableSubscriptionClientId="test-server-id"/>
-      <jms:runtimePolicy               
-         messageSelector="cxf_message_selector"
-         useMessageIDAsCorrelationID="true"
-         transactional="true"
-         durableSubscriberName="cxf_subscriber"/>
+    <jms:destination name="{http://cxf.apache.org/jms_conf_test}HelloWorldQueueBinMsgPort.jms-destination">     
       <jms:sessionPool
           lowWaterMark="10"
           highWaterMark="5000"/>
@@ -66,11 +58,12 @@
           connectionUserName="testUser"
           connectionPassword="testPassword">
           <jms:JMSNamingProperty name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
-          <jms:JMSNamingProperty name="java.naming.provider.url" value="tcp://localhost:61500"/>
-      </jms:address>   
-  </jms:destination> 
+          <jms:JMSNamingProperty name="java.naming.provider.url" value="tcp://localhost:61511"/>
+      </jms:address> 
+      <jms:jmsConfig-ref>jmsConf2</jms:jmsConfig-ref>  
+  </jms:destination>
   
-   <jms:destination name="{http://cxf.apache.org/hello_world_jms}HelloWorldPubSubPort.jms-destination">
+  <jms:destination name="{http://cxf.apache.org/hello_world_jms}HelloWorldPubSubPort.jms-destination">
       <jms:serverConfig
         messageTimeToLive="500"
         durableSubscriptionClientId="test-server-id"/>      
@@ -93,7 +86,29 @@
   	p:connectionFactory-ref="connectionFactory"
   	p:targetDestination="queue:test"
   	p:pubSubDomain="false"
+  	
+  />
+  
+  <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"
+    p:brokerURL="tcp://localhost:61500"
   />
+  
+
+  
+  <bean id="jmsConf2" class="org.apache.cxf.transport.jms.JMSConfiguration"
+  	p:connectionFactory-ref="jmsConnectionFactory"
+  	p:timeToLive="500"
+  	p:messageSelector="cxf_message_selector"
+  	p:sessionTransacted="true"
+    p:durableSubscriptionName="cxf_subscriber"
+  	p:targetDestination="queue:test"
+  	p:replyDestination="queue:test.reply"
+  	p:pubSubDomain="false"
+  	p:usingEndpointInfo="false"
+  	p:concurrentConsumers="3"
+  	p:maxConcurrentConsumers="5"
+  />    
+ 
 <!--
   <bean class="org.apache.cxf.transport.jms.JMSTransportFactory"
 	  id="org.apache.cxf.transport.jms.JMSTransportFactory"