You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/12/24 07:50:28 UTC

svn commit: r729254 - in /servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src: main/java/org/apache/servicemix/cxfbc/ test/java/org/apache/servicemix/cxfbc/ test/resources/ test/resources/org/apache/servicemix/cx...

Author: ffang
Date: Tue Dec 23 22:50:28 2008
New Revision: 729254

URL: http://svn.apache.org/viewvc?rev=729254&view=rev
Log:
[SM-1726]enable transaction support for cxf bc consumer over jms transport

Added:
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java   (with props)
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml   (with props)
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml   (with props)
Modified:
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplTwoWayJMS.java
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/MyJMSServer.java

Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java?rev=729254&r1=729253&r2=729254&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcConsumer.java Tue Dec 23 22:50:28 2008
@@ -34,6 +34,7 @@
 import javax.jbi.messaging.MessageExchange;
 import javax.jbi.messaging.NormalizedMessage;
 import javax.jbi.servicedesc.ServiceEndpoint;
+import javax.transaction.TransactionManager;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.soap.SOAPBinding;
 import javax.xml.namespace.QName;
@@ -85,11 +86,15 @@
 import org.apache.cxf.service.model.BindingFaultInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.FaultInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.transport.ChainInitiationObserver;
+import org.apache.cxf.transport.Destination;
 import org.apache.cxf.transport.http_jetty.JettyHTTPDestination;
 import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
+import org.apache.cxf.transport.jms.JMSConfiguration;
+import org.apache.cxf.transport.jms.JMSDestination;
 import org.apache.cxf.ws.addressing.AddressingProperties;
 import org.apache.cxf.ws.rm.Servant;
 import org.apache.cxf.wsdl.WSDLManager;
@@ -105,6 +110,7 @@
 import org.apache.servicemix.soap.util.DomUtil;
 import org.mortbay.jetty.Handler;
 import org.springframework.core.io.Resource;
+import org.springframework.transaction.PlatformTransactionManager;
 
 /**
  * 
@@ -157,7 +163,8 @@
     
     private List<AbstractFeature> features = new CopyOnWriteArrayList<AbstractFeature>();
     
-    
+    private boolean transactionEnabled;
+        
     /**
      * @return the wsdl
      */
@@ -276,7 +283,7 @@
         
         
         Message message = messages.remove(exchange.getExchangeId());
-                
+                       
         synchronized (message.getInterceptorChain()) {
             boolean oneway = message.getExchange().get(
                     BindingOperationInfo.class).getOperationInfo().isOneWay();
@@ -300,9 +307,29 @@
         super.start();
         registerListServiceHandler();
         applyFeatures();
+        checkJmsTransportTransaction();
         server.start();
     }
     
+    private void checkJmsTransportTransaction() {
+        Destination destination = server.getDestination();
+        if (destination instanceof JMSDestination) {
+            JMSDestination jmsDestination = (JMSDestination)destination;
+            JMSConfiguration jmsConfig = jmsDestination.getJmsConfig();
+            if (jmsConfig.isSessionTransacted()) {
+                TransactionManager tm = (TransactionManager) getContext().getTransactionManager();
+                if (tm == null) {
+                    throw new IllegalStateException("No TransactionManager available");
+                } else if (tm instanceof PlatformTransactionManager) {
+                    jmsConfig.setTransactionManager((PlatformTransactionManager)tm);
+                    setSynchronous(true);
+                    transactionEnabled = true;
+                }
+            }
+        } 
+        
+    }
+
     private void applyFeatures() {
         if (getFeatures() != null) {
             for (AbstractFeature feature : getFeatures()) {
@@ -398,8 +425,8 @@
                             .getServiceUnit().getComponent())
                             .getConfiguration().getAuthenticationService()));
             cxfService.getInInterceptors().add(new JbiInvokerInterceptor());
+                
             cxfService.getInInterceptors().add(new JbiPostInvokerInterceptor());
-            
 
             cxfService.getInInterceptors().add(new OutgoingChainInterceptor());
 
@@ -552,6 +579,8 @@
     public String getLocationURI() {
         return locationURI;
     }
+    
+    
 
     protected class JbiChainInitiationObserver extends ChainInitiationObserver {
 
@@ -782,9 +811,36 @@
                     outMessage.setAttachments(attachmentList);
                 }
             }
-
+            
+        }
+        
+        public void handleFault(Message message) {
+            if (transactionEnabled) {
+                //detect if the fault is defined in the wsdl, which means need return to client and 
+                //jms transactionManger just commit
+                Exchange ex = message.getExchange();
+                BindingOperationInfo boi = ex.get(BindingOperationInfo.class);
+                for (BindingFaultInfo bfi : boi.getFaults()) {
+                    FaultInfo fi = bfi.getFaultInfo();
+                    //get fault details
+                    MessagePartInfo mpi = fi.getMessageParts().get(0);
+                    if (mpi != null) {
+                        Fault fault = (Fault) message.getContent(Exception.class);
+                        Element detail = fault.getDetail();
+                        if (detail != null 
+                                && detail.getFirstChild().getLocalName().equals(mpi.getName().getLocalPart())) {
+                            //it's fault defined in the wsdl, so let it go back to the client
+                            return;
+                        }
+                    }
+                }
+                //this exception is undefined in the wsdl, so tell the transactionManager injected into
+                //jms transport need rollback
+                throw new RuntimeException("rollback");
+            }
         }
 
+
         // this method is used for ws-policy to set BindingFaultInfo
         protected void processFaultDetail(Fault fault, Message msg) {
             if (fault.getDetail() == null) {

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java?rev=729254&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java Tue Dec 23 22:50:28 2008
@@ -0,0 +1,201 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.cxfbc;
+
+import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.testutil.common.ServerLauncher;
+import org.apache.hello_world_soap_http.BadRecordLitFault;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.HelloWorldService;
+import org.apache.hello_world_soap_http.NoSuchCodeLitFault;
+import org.apache.servicemix.jbi.container.SpringJBIContainer;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.apache.servicemix.tck.SpringTestSupport;
+import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+
+public class CxfBcJmsTransactionTest extends SpringTestSupport {
+
+    protected static boolean serversStarted;
+    private ServerLauncher sl;
+    private ServerLauncher embeddedLauncher;
+    private ServerLauncher jmsLauncher;
+
+    
+    
+    public void startServers() throws Exception {
+        if (serversStarted) {
+            return;
+        }
+        Map<String, String> props = new HashMap<String, String>();                
+        if (System.getProperty("activemq.store.dir") != null) {
+            props.put("activemq.store.dir", System.getProperty("activemq.store.dir"));
+        }
+        props.put("java.util.logging.config.file", 
+                  System.getProperty("java.util.logging.config.file"));
+        
+        assertTrue("server did not launch correctly", 
+                   launchServer(EmbededJMSBrokerLauncher.class, props, false));
+        embeddedLauncher =  sl;
+        assertTrue("server did not launch correctly", 
+                launchServer(MyJMSServer.class, null, false));
+        jmsLauncher = sl;
+        
+        serversStarted = true;
+    }
+    
+    protected void setUp() throws Exception {
+        startServers();
+        //super.setUp();
+            
+    }
+    
+    public void setUpJBI(String beanFile) throws Exception {
+        if (context != null) {
+            context.refresh();
+        }
+        transformer = new SourceTransformer();
+        if (beanFile == null) {
+            context = createBeanFactory();
+        } else {
+            context = createBeanFactory(beanFile);
+        }
+
+        jbi = (SpringJBIContainer) context.getBean("jbi");
+        assertNotNull("JBI Container not found in spring!", jbi);
+    }
+    
+    protected void tearDown() throws Exception {
+        try {
+            embeddedLauncher.stopServer();         
+        } catch (IOException ex) {
+            ex.printStackTrace();
+            fail("failed to stop server " + embeddedLauncher.getClass());
+        }
+        try {
+            jmsLauncher.stopServer();         
+        } catch (IOException ex) {
+            ex.printStackTrace();
+            fail("failed to stop server " + jmsLauncher.getClass());
+        } 
+        serversStarted = false;
+    }
+    
+    public boolean launchServer(Class<?> clz, Map<String, String> p, boolean inProcess) {
+        boolean ok = false;
+        try { 
+            sl = new ServerLauncher(clz.getName(), p, null, inProcess);
+            ok = sl.launchServer();
+            assertTrue("server failed to launch", ok);
+            
+        } catch (IOException ex) {
+            ex.printStackTrace();
+            fail("failed to launch server " + clz);
+        }
+        
+        return ok;
+    }
+
+    public void testJMSTransaction() throws Exception {
+        setUpJBI("org/apache/servicemix/cxfbc/jms_transport_transaction.xml");
+        jmsTestBase();
+    }
+    
+    private void jmsTestBase() throws Exception, NoSuchCodeLitFault, BadRecordLitFault {
+        SpringBusFactory bf = new SpringBusFactory();
+        Bus testBus = bf.createBus("org/apache/servicemix/cxfbc/jms_test_timeout.xml");
+        BusFactory.setDefaultBus(testBus);
+
+        URL wsdl = getWSDLURL("org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl");
+
+        QName serviceName = getServiceName(new QName(
+                "http://apache.org/hello_world_soap_http", "HelloWorldService"));
+        QName portName = getPortName(new QName(
+                "http://apache.org/hello_world_soap_http", "HelloWorldPort"));
+        
+        assertNotNull(wsdl);
+
+        HelloWorldService service = new HelloWorldService(wsdl, serviceName);
+        assertNotNull(service);
+
+        String response1 = new String("Hello ");
+        String response2 = new String("Bonjour");
+        try {
+            Greeter greeter = service.getPort(portName, Greeter.class);
+            String greeting = greeter.greetMe("transaction");
+            assertNotNull("no response received from service", greeting);
+            String exResponse = response1 + "transaction";
+            assertEquals(exResponse, greeting);
+
+            String reply = greeter.sayHi();
+            assertNotNull("no response received from service", reply);
+            assertEquals(response2, reply);
+            greeter.greetMeOneWay("test");
+            try {
+                greeter.testDocLitFault("BadRecordLitFault");
+                fail("Should have thrown BadRecoedLitFault");
+            } catch (BadRecordLitFault ex) {
+                assertNotNull(ex.getFaultInfo());
+            }
+
+            try {
+                greeter.testDocLitFault("NoSuchCodeLitFault");
+                fail("Should have thrown NoSuchCodeLitFault exception");
+            } catch (NoSuchCodeLitFault nslf) {
+                assertNotNull(nslf.getFaultInfo());
+                assertNotNull(nslf.getFaultInfo().getCode());
+            }
+
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception) ex.getCause();
+        }
+    }
+
+    @Override
+    protected AbstractXmlApplicationContext createBeanFactory() {
+        return new ClassPathXmlApplicationContext(
+                "org/apache/servicemix/cxfbc/jms_transport_transaction.xml");
+    }
+    
+    protected AbstractXmlApplicationContext createBeanFactory(String beanFile) {
+        // load cxf se and bc from specified spring config file
+        return new ClassPathXmlApplicationContext(beanFile);
+    }
+    
+    public QName getServiceName(QName q) {
+        return q;
+    }
+    
+    public QName getPortName(QName q) {
+        return q;
+    }
+    
+    public URL getWSDLURL(String s) throws Exception {
+        return CxfBcJmsTest.class.getClassLoader().getResource(s);
+    }
+
+}

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTransactionTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplTwoWayJMS.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplTwoWayJMS.java?rev=729254&r1=729253&r2=729254&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplTwoWayJMS.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplTwoWayJMS.java Tue Dec 23 22:50:28 2008
@@ -23,6 +23,7 @@
                     wsdlLocation = "org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl")
 public class GreeterImplTwoWayJMS extends
         org.apache.hello_world_soap_http.GreeterImpl {
+    static int count = 3;
     public String greetMe(String me) {
         System.out.println("\n\n*** GreetMe called with: " + me + "***\n\n");
         if ("ffang".equals(me)) {
@@ -41,6 +42,11 @@
                 e.printStackTrace();
             }
         }
+        if ("transaction".equals(me) && count > 0) {
+            //do some test designed for CxfBcJmsTransactionTest
+            count--;
+            throw new RuntimeException("triger jms transport transaction rollback");
+        }
         return "Hello " + me;
     }
 

Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/MyJMSServer.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/MyJMSServer.java?rev=729254&r1=729253&r2=729254&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/MyJMSServer.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/MyJMSServer.java Tue Dec 23 22:50:28 2008
@@ -18,6 +18,9 @@
 
 import javax.xml.ws.Endpoint;
 
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 
 public class MyJMSServer extends AbstractBusTestServerBase {
@@ -26,7 +29,9 @@
         System.out.println("Starting Server");
         Object implementor = new GreeterImplTwoWayJMS();
         String address = "http://localhost:9000/SoapContext/SoapPort";
-        Endpoint.publish(address, implementor);
+        EndpointImpl endpoint = (EndpointImpl) Endpoint.publish(address, implementor);
+        endpoint.getInFaultInterceptors().add(new LoggingInInterceptor());
+        endpoint.getOutInterceptors().add(new LoggingOutInterceptor());
     }
   
     public static void main(String args[]) throws Exception {

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml?rev=729254&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml Tue Dec 23 22:50:28 2008
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+  
+-->
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+       xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0"
+       xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
+       xmlns:test="urn:test"
+       xmlns:greeter="http://apache.org/hello_world_soap_http"
+       >
+  <import resource="classpath:tx.xml" />
+  <sm:container id="jbi" embedded="true" transactionManager="#transactionManager">
+    
+    <sm:endpoints>
+      <cxfbc:consumer wsdl="org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl"
+                      service="greeter:HelloWorldService"
+                      endpoint="HelloWorldPort"
+                      targetEndpoint="HelloWorldPortProxy"
+                      targetService="greeter:HelloWorldService"
+                      targetInterface="greeter:Greeter"
+                      >
+        <cxfbc:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inInterceptors>
+        <cxfbc:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outInterceptors>
+        <cxfbc:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inFaultInterceptors>
+        <cxfbc:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outFaultInterceptors>
+        <cxfbc:features>
+           <bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
+                <property name="jmsConfig">
+                    <bean class="org.apache.cxf.transport.jms.JMSConfiguration">
+                        <property name="connectionFactory">
+                            <ref bean="myConnectionFactory" />
+                        </property>
+                        <property name="sessionTransacted">
+                            <value>true</value>
+                        </property>                       
+                        <property name="targetDestination">
+                            <value>test.jmstransport.text</value>
+                        </property>
+                    </bean>
+                </property>
+            </bean>
+        </cxfbc:features>
+      </cxfbc:consumer>
+      <cxfbc:provider wsdl="org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl"
+                      service="greeter:HelloWorldService"
+                      endpoint="HelloWorldPortProxy"
+                      interfaceName="greeter:Greetr"
+                      busCfg="org/apache/servicemix/cxfbc/jms_test_timeout_provider.xml"
+                     >
+          <!--cxfbc:inInterceptors>
+            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+          </cxfbc:inInterceptors>
+          <cxfbc:outInterceptors>
+            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+          </cxfbc:outInterceptors>
+          <cxfbc:inFaultInterceptors>
+            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+          </cxfbc:inFaultInterceptors>
+          <cxfbc:outFaultInterceptors>
+            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+          </cxfbc:outFaultInterceptors-->
+          <cxfbc:features>
+           <bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
+                <property name="jmsConfig">
+                    <bean class="org.apache.cxf.transport.jms.JMSConfiguration">
+                        <property name="connectionFactory">
+                            <ref bean="myConnectionFactory" />
+                        </property>
+                        <property name="targetDestination">
+                            <value>test.jmstransport.text.provider</value>
+                        </property>
+                    </bean>
+                </property>
+            </bean>
+        </cxfbc:features>
+      </cxfbc:provider>
+     
+    </sm:endpoints>
+    
+  </sm:container>
+  <bean id="myConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory102">
+        <property name="targetConnectionFactory">
+            <bean class="org.apache.activemq.ActiveMQConnectionFactory">
+                <property name="brokerURL" value="tcp://localhost:61616" />
+            </bean>
+        </property>
+  </bean>
+  
+</beans>

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/jms_transport_transaction.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml?rev=729254&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml Tue Dec 23 22:50:28 2008
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+
+-->
+<beans xmlns:jencks="http://jencks.org/2.0">
+
+  <!-- Transaction manager -->
+  <jencks:transactionManager
+            id="transactionManager"
+            transactionLogDir="./data/txlog"
+            defaultTransactionTimeoutSeconds="600" />
+  
+  <!-- Work manager -->
+  <jencks:workManager
+            id="workManager"
+            threadPoolSize="200"
+            transactionManager="#transactionManager" />
+  
+  <!-- Bootstrap context for JCA -->
+  <jencks:bootstrapContext
+            id="bootstrapContext"
+            workManager="#workManager"
+            transactionManager="#transactionManager" />
+  
+  <!-- Connection manager for JCA -->
+  <jencks:connectionTracker id="connectionTracker" geronimoTransactionManager="#transactionManager" />
+  
+  <jencks:poolingSupport 
+            id="poolingSupport" />
+            
+  <jencks:connectionManager
+            id="connectionManager"
+            containerManagedSecurity="false"
+            transaction="xa"
+            transactionManager="#transactionManager"
+            poolingSupport="#poolingSupport"
+            connectionTracker="#connectionTracker" />
+  
+</beans>

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/tx.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml