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"
