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/10/27 10:38:32 UTC

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

Author: ffang
Date: Mon Oct 27 02:38:31 2008
New Revision: 708114

URL: http://svn.apache.org/viewvc?rev=708114&view=rev
Log:
[SM-1571]CXF BC Provider using JMS Transport is not scalable (locks thread waiting for external service response)

Added:
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/CxfBCSEProviderAsyncSystemTest.java   (with props)
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/TimeCompareInterceptor.java   (with props)
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_async.xml   (with props)
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_sync.xml   (with props)
Modified:
    servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.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/provider/GreeterImpl.java
    servicemix/smx3/branches/servicemix-3.2/pom.xml

Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.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/CxfBcProvider.java?rev=708114&r1=708113&r2=708114&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java Mon Oct 27 02:38:31 2008
@@ -93,8 +93,9 @@
 /**
  * 
  * @author gnodet
- * @org.apache.xbean.XBean element="provider" description="a provider endpoint that is capable of 
- * exposing SOAP/HTTP or SOAP/JMS services"
+ * @org.apache.xbean.XBean element="provider" description="a provider endpoint
+ *                         that is capable of exposing SOAP/HTTP or SOAP/JMS
+ *                         services"
  */
 public class CxfBcProvider extends ProviderEndpoint implements
         CxfBcEndpointWithInterceptor {
@@ -114,7 +115,7 @@
     private Bus bus;
 
     private ConduitInitiator conduitInit;
-    
+
     private Conduit conduit;
 
     private URI locationURI;
@@ -129,6 +130,8 @@
 
     private boolean useJBIWrapper = true;
 
+    private boolean synchronous = true;
+
     public void processExchange(MessageExchange exchange) {
 
     }
@@ -140,14 +143,16 @@
         }
         NormalizedMessage nm = exchange.getMessage("in");
 
-        Object newDestinationURI = nm.getProperty(JbiConstants.HTTP_DESTINATION_URI);
+        Object newDestinationURI = nm
+                .getProperty(JbiConstants.HTTP_DESTINATION_URI);
         if (newDestinationURI != null) {
             ei.setAddress((String) newDestinationURI);
         }
-        
+
         Message message = ep.getBinding().createMessage();
         message.put(MessageExchange.class, exchange);
         Exchange cxfExchange = new ExchangeImpl();
+        cxfExchange.setSynchronous(isSynchronous());
         cxfExchange.put(MessageExchange.class, exchange);
 
         message.setExchange(cxfExchange);
@@ -172,6 +177,7 @@
         cxfExchange.put(BindingOperationInfo.class, boi);
         cxfExchange.put(Endpoint.class, ep);
         cxfExchange.put(Service.class, cxfService);
+        cxfExchange.put(Bus.class, getBus());
         PhaseInterceptorChain outChain = createInterceptorChain(message);
         InputStream is = JBIMessageHelper.convertMessageToInputStream(nm
                 .getContent());
@@ -180,13 +186,13 @@
         message.setContent(Source.class, source);
 
         message.setContent(InputStream.class, is);
-                
+
         conduit.prepare(message);
         OutputStream os = message.getContent(OutputStream.class);
         message.put(org.apache.cxf.message.Message.REQUESTOR_ROLE, true);
         try {
             outChain.doIntercept(message);
-            //Check to see if there is a Fault from the outgoing chain
+            // Check to see if there is a Fault from the outgoing chain
             Exception ex = message.getContent(Exception.class);
             if (ex != null) {
                 throw ex;
@@ -195,18 +201,18 @@
             if (ex != null) {
                 throw ex;
             }
-            String contentType = (String)message.get(Message.CONTENT_TYPE);
-                        
+            String contentType = (String) message.get(Message.CONTENT_TYPE);
+
             Map<String, List<String>> headers = getSetProtocolHeaders(message);
             if (headers.get(Message.CONTENT_TYPE) == null) {
                 List<String> ct = new ArrayList<String>();
                 ct.add(contentType);
                 headers.put(Message.CONTENT_TYPE, ct);
-            }  else {
+            } else {
                 List<String> ct = headers.get(Message.CONTENT_TYPE);
                 ct.add(contentType);
             }
-            
+
             os = message.getContent(OutputStream.class);
             os.flush();
             is.close();
@@ -234,13 +240,11 @@
         outList.add(new SoapOutInterceptor(getBus()));
         outList.add(new SoapActionOutInterceptor());
         outList.add(new StaxOutInterceptor());
-        
-        
+
         getInInterceptors().addAll(getBus().getInInterceptors());
         getInFaultInterceptors().addAll(getBus().getInFaultInterceptors());
         getOutInterceptors().addAll(getBus().getOutInterceptors());
-        getOutFaultInterceptors()
-                .addAll(getBus().getOutFaultInterceptors());
+        getOutFaultInterceptors().addAll(getBus().getOutFaultInterceptors());
         PhaseInterceptorChain outChain = outboundChainCache.get(pm
                 .getOutPhases(), outList);
         outChain.add(getOutInterceptors());
@@ -248,19 +252,19 @@
         message.setInterceptorChain(outChain);
         return outChain;
     }
-    
+
     private Map<String, List<String>> getSetProtocolHeaders(Message message) {
-        Map<String, List<String>> headers =
-            CastUtils.cast((Map<?, ?>)message.get(Message.PROTOCOL_HEADERS));        
+        Map<String, List<String>> headers = CastUtils.cast((Map<?, ?>) message
+                .get(Message.PROTOCOL_HEADERS));
         if (null == headers) {
             headers = new HashMap<String, List<String>>();
             message.put(Message.PROTOCOL_HEADERS, headers);
         }
         return headers;
     }
-    
 
-    private void faultProcess(MessageExchange exchange, Message message, Exception e) throws MessagingException {
+    private void faultProcess(MessageExchange exchange, Message message,
+            Exception e) throws MessagingException {
         javax.jbi.messaging.Fault fault = exchange.createFault();
         if (e.getCause() != null) {
             handleJBIFault(message, e.getCause().getMessage());
@@ -280,109 +284,120 @@
         }
     }
 
-   
     private void handleJBIFault(Message message, String detail) {
         Document doc = DomUtil.createDocument();
         Element jbiFault = DomUtil.createElement(doc, new QName(
                 JBIConstants.NS_JBI_BINDING, JBIFault.JBI_FAULT_ROOT));
-        Node jbiFaultDetail = DomUtil.createElement(jbiFault, new QName("", JBIFault.JBI_FAULT_DETAIL));
+        Node jbiFaultDetail = DomUtil.createElement(jbiFault, new QName("",
+                JBIFault.JBI_FAULT_DETAIL));
         jbiFaultDetail.setTextContent(detail);
         jbiFault.appendChild(jbiFaultDetail);
         message.setContent(Source.class, new DOMSource(doc));
         message.put("jbiFault", true);
     }
-    
+
     /**
-        * Returns the list of interceptors used to process fault messages being
-        * sent back to the consumer.
-        *
-        * @return a list of <code>Interceptor</code> objects
-        * */
+     * Returns the list of interceptors used to process fault messages being
+     * sent back to the consumer.
+     * 
+     * @return a list of <code>Interceptor</code> objects
+     */
     public List<Interceptor> getOutFaultInterceptors() {
         return outFault;
     }
 
     /**
-        * Returns the list of interceptors used to process fault messages being
-        * recieved by the endpoint.
-        *
-        * @return a list of <code>Interceptor</code> objects
-        * */
+     * Returns the list of interceptors used to process fault messages being
+     * recieved by the endpoint.
+     * 
+     * @return a list of <code>Interceptor</code> objects
+     */
     public List<Interceptor> getInFaultInterceptors() {
         return inFault;
     }
 
     /**
-        * Returns the list of interceptors used to process requests being 
-        * recieved by the endpoint.
-        *
-        * @return a list of <code>Interceptor</code> objects
-        * */
+     * Returns the list of interceptors used to process requests being recieved
+     * by the endpoint.
+     * 
+     * @return a list of <code>Interceptor</code> objects
+     */
     public List<Interceptor> getInInterceptors() {
         return in;
     }
 
     /**
-        * Returns the list of interceptors used to process responses being
-        * sent back to the consumer.
-        *
-        * @return a list of <code>Interceptor</code> objects
-        * */
+     * Returns the list of interceptors used to process responses being sent
+     * back to the consumer.
+     * 
+     * @return a list of <code>Interceptor</code> objects
+     */
     public List<Interceptor> getOutInterceptors() {
         return out;
     }
 
     /**
-        * Specifies a list of interceptors used to process requests recieved
-        * by the endpoint.
-        *
-        * @param interceptors   a list of <code>Interceptor</code> objects
-        * @org.apache.xbean.Property description="a list of beans configuring interceptors that process incoming requests"
-        * */
+     * Specifies a list of interceptors used to process requests recieved by the
+     * endpoint.
+     * 
+     * @param interceptors
+     *            a list of <code>Interceptor</code> objects
+     * @org.apache.xbean.Property description="a list of beans configuring
+     *                            interceptors that process incoming requests"
+     */
     public void setInInterceptors(List<Interceptor> interceptors) {
         in = interceptors;
     }
 
     /**
-        * Specifies a list of interceptors used to process faults recieved by
-         * the endpoint.
-        *
-        * @param interceptors   a list of <code>Interceptor</code> objects
-        * @org.apache.xbean.Property description="a list of beans configuring interceptors that process incoming faults"
-        * */
+     * Specifies a list of interceptors used to process faults recieved by the
+     * endpoint.
+     * 
+     * @param interceptors
+     *            a list of <code>Interceptor</code> objects
+     * @org.apache.xbean.Property description="a list of beans configuring
+     *                            interceptors that process incoming faults"
+     */
     public void setInFaultInterceptors(List<Interceptor> interceptors) {
         inFault = interceptors;
     }
 
     /**
-        * Specifies a list of interceptors used to process responses sent by 
-        * the endpoint.
-        *
-        * @param interceptors   a list of <code>Interceptor</code> objects
-        * @org.apache.xbean.Property description="a list of beans configuring interceptors that process responses"
-        * */
+     * Specifies a list of interceptors used to process responses sent by the
+     * endpoint.
+     * 
+     * @param interceptors
+     *            a list of <code>Interceptor</code> objects
+     * @org.apache.xbean.Property description="a list of beans configuring
+     *                            interceptors that process responses"
+     */
     public void setOutInterceptors(List<Interceptor> interceptors) {
         out = interceptors;
     }
 
     /**
-        * Specifies a list of interceptors used to process faults sent by 
-        * the endpoint.
-        *
-        * @param interceptors   a list of <code>Interceptor</code> objects
-        * @org.apache.xbean.Property description="a list of beans configuring interceptors that process fault 
-        * messages being returned to the consumer"
-        * */
+     * Specifies a list of interceptors used to process faults sent by the
+     * endpoint.
+     * 
+     * @param interceptors
+     *            a list of <code>Interceptor</code> objects
+     * @org.apache.xbean.Property description="a list of beans configuring
+     *                            interceptors that process fault messages being
+     *                            returned to the consumer"
+     */
     public void setOutFaultInterceptors(List<Interceptor> interceptors) {
         outFault = interceptors;
     }
 
     /**
-          * Specifies the location of the WSDL defining the endpoint's interface.
-          *
-          * @param wsdl the location of the WSDL contract as a <code>Resource</code> object
-          * @org.apache.xbean.Property description="the location of the WSDL document defining the endpoint's interface"
-          **/
+     * Specifies the location of the WSDL defining the endpoint's interface.
+     * 
+     * @param wsdl
+     *            the location of the WSDL contract as a <code>Resource</code>
+     *            object
+     * @org.apache.xbean.Property description="the location of the WSDL document
+     *                            defining the endpoint's interface"
+     */
     public void setWsdl(Resource wsdl) {
         this.wsdl = wsdl;
     }
@@ -428,7 +443,7 @@
 
                     }
                 }
-                
+
                 ServiceInfo serInfo = new ServiceInfo();
 
                 Map<String, Element> schemaList = new HashMap<String, Element>();
@@ -438,7 +453,7 @@
                 serInfo = ei.getService();
                 List<ServiceInfo> serviceInfos = new ArrayList<ServiceInfo>();
                 serviceInfos.add(serInfo);
-                //transform import xsd to inline xsd
+                // transform import xsd to inline xsd
                 ServiceWSDLBuilder swBuilder = new ServiceWSDLBuilder(getBus(),
                         serviceInfos);
                 for (String key : schemaList.keySet()) {
@@ -448,7 +463,7 @@
                                 "http://www.w3.org/2001/XMLSchema", "import")
                                 .item(0);
                         if (sInfo.getNamespaceURI() == null // it's import
-                                                            // schema
+                                // schema
                                 && nl != null
                                 && ((Element) nl)
                                         .getAttribute("namespace")
@@ -460,7 +475,7 @@
                         }
                     }
                 }
-                
+
                 serInfo.setProperty(WSDLServiceBuilder.WSDL_DEFINITION, null);
                 description = WSDLFactory.newInstance().newWSDLWriter()
                         .getDocument(swBuilder.build());
@@ -484,7 +499,8 @@
                 conduitInit = conduitMgr.getConduitInitiator(ei
                         .getTransportId());
                 conduit = conduitInit.getConduit(ei);
-                CxfBcProviderMessageObserver obs = new CxfBcProviderMessageObserver(this);
+                CxfBcProviderMessageObserver obs = new CxfBcProviderMessageObserver(
+                        this);
                 conduit.setMessageObserver(obs);
                 super.validate();
             }
@@ -514,14 +530,18 @@
     }
 
     /**
-        * Specifies the location of the CXF configuraiton file used to configure
-        * the CXF bus. This allows you to access features like JMS runtime 
-        * behavior and WS-RM.
-        *
-        * @param busCfg a string containing the relative path to the configuration file
-        * @org.apache.xbean.Property description="the location of the CXF configuration file used to configure the CXF bus. 
-        * This allows you to configure features like WS-RM and JMS runtime behavior."
-        **/
+     * Specifies the location of the CXF configuraiton file used to configure
+     * the CXF bus. This allows you to access features like JMS runtime behavior
+     * and WS-RM.
+     * 
+     * @param busCfg
+     *            a string containing the relative path to the configuration
+     *            file
+     * @org.apache.xbean.Property description="the location of the CXF
+     *                            configuration file used to configure the CXF
+     *                            bus. This allows you to configure features
+     *                            like WS-RM and JMS runtime behavior."
+     */
     public void setBusCfg(String busCfg) {
         this.busCfg = busCfg;
     }
@@ -531,13 +551,15 @@
     }
 
     /**
-           * Specifies the HTTP address of the exposed service. This value will
-           * overide any value specified in the WSDL.
-           *
-           * @param locationURI a <code>URI</code> object
-           * @org.apache.xbean.Property description="the HTTP address of the exposed service. This value will overide 
-           * any value specified in the WSDL."
-           **/
+     * Specifies the HTTP address of the exposed service. This value will
+     * overide any value specified in the WSDL.
+     * 
+     * @param locationURI
+     *            a <code>URI</code> object
+     * @org.apache.xbean.Property description="the HTTP address of the exposed
+     *                            service. This value will overide any value
+     *                            specified in the WSDL."
+     */
     public void setLocationURI(URI locationURI) {
         this.locationURI = locationURI;
     }
@@ -546,8 +568,6 @@
         return locationURI;
     }
 
-    
-
     Endpoint getCxfEndpoint() {
         return this.ep;
     }
@@ -557,12 +577,14 @@
     }
 
     /**
-          * Specifies if the endpoint can support binnary attachments.
-          *
-          * @param  mtomEnabled a boolean
-          * @org.apache.xbean.Property description="Specifies if MTOM / attachment support is enabled. 
-          * Default is <code>false</code>."
-          **/
+     * Specifies if the endpoint can support binnary attachments.
+     * 
+     * @param mtomEnabled
+     *            a boolean
+     * @org.apache.xbean.Property description="Specifies if MTOM / attachment
+     *                            support is enabled. Default is
+     *                            <code>false</code>."
+     */
     public void setMtomEnabled(boolean mtomEnabled) {
         this.mtomEnabled = mtomEnabled;
     }
@@ -572,13 +594,15 @@
     }
 
     /**
-          * Specifies if the endpoint expects messages to use the JBI wrapper 
-          * for SOAP messages.
-          *
-          * @param  useJBIWrapper a boolean
-          * @org.apache.xbean.Property description="Specifies if the JBI wrapper is sent in the body of the message. 
-          * Default is <code>true</code>."
-          **/
+     * Specifies if the endpoint expects messages to use the JBI wrapper for
+     * SOAP messages.
+     * 
+     * @param useJBIWrapper
+     *            a boolean
+     * @org.apache.xbean.Property description="Specifies if the JBI wrapper is
+     *                            sent in the body of the message. Default is
+     *                            <code>true</code>."
+     */
     public void setUseJBIWrapper(boolean useJBIWrapper) {
         this.useJBIWrapper = useJBIWrapper;
     }
@@ -587,4 +611,23 @@
         return useJBIWrapper;
     }
 
+    /**
+     * Specifies if the endpoints send message synchronously to external server
+     * using underlying jms/http transport
+     *  *
+     * @param synchronous
+     *            a boolean
+     * @org.apache.xbean.Property description="Specifies if the endpoints send
+     *                            message synchronously to external server using
+     *                            underlying jms/http transport. Default is
+     *                            <code>true</code>."
+     */
+    public void setSynchronous(boolean synchronous) {
+        this.synchronous = synchronous;
+    }
+
+    public boolean isSynchronous() {
+        return synchronous;
+    }
+
 }

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=708114&r1=708113&r2=708114&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 Mon Oct 27 02:38:31 2008
@@ -16,17 +16,13 @@
  */
 package org.apache.servicemix.cxfbc;
 
-
-
-@javax.jws.WebService(
-        serviceName = "HelloWorldService", 
-        portName = "HelloWorldPortProxy", 
-        endpointInterface = "org.apache.hello_world_soap_http.Greeter",
-        targetNamespace = "http://apache.org/hello_world_soap_http",
-        wsdlLocation = "org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl"
-    )
-public class GreeterImplTwoWayJMS 
-    extends org.apache.hello_world_soap_http.GreeterImpl {
+@javax.jws.WebService(serviceName = "HelloWorldService", 
+                    portName = "HelloWorldPortProxy", 
+                    endpointInterface = "org.apache.hello_world_soap_http.Greeter", 
+                    targetNamespace = "http://apache.org/hello_world_soap_http", 
+                    wsdlLocation = "org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl")
+public class GreeterImplTwoWayJMS extends
+        org.apache.hello_world_soap_http.GreeterImpl {
     public String greetMe(String me) {
         System.out.println("\n\n*** GreetMe called with: " + me + "***\n\n");
         if ("ffang".equals(me)) {
@@ -37,7 +33,15 @@
                 e.printStackTrace();
             }
         }
+        if ("wait".equals(me)) {
+            try {
+                Thread.sleep(10000);
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        }
         return "Hello " + me;
     }
-        
+
 }

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/CxfBCSEProviderAsyncSystemTest.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/provider/CxfBCSEProviderAsyncSystemTest.java?rev=708114&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/CxfBCSEProviderAsyncSystemTest.java (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/CxfBCSEProviderAsyncSystemTest.java Mon Oct 27 02:38:31 2008
@@ -0,0 +1,307 @@
+/*
+ * 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.provider;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import javax.jbi.messaging.InOut;
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.common.logging.LogUtils;
+
+import org.apache.cxf.testutil.common.ServerLauncher;
+
+import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.cxfbc.EmbededJMSBrokerLauncher;
+import org.apache.servicemix.cxfbc.MyJMSServer;
+import org.apache.servicemix.jbi.container.SpringJBIContainer;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.apache.servicemix.jbi.jaxp.StringSource;
+import org.apache.servicemix.tck.SpringTestSupport;
+import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+
+/*
+ * This test is designed to verify that if use asynchrounous mode, the cxf bc
+ * provider will use non block mode to invoke the external server through
+ * underlying jms or http transport.To prove it works, configure the jbi
+ * container allocate only one thread to the cxf bc, and use a outgoing chain
+ * TimeCompareInterceptor to illustrate the second invocation send out before
+ * the first one returns, which means the noblock cxf bc provide works.
+ */
+public class CxfBCSEProviderAsyncSystemTest extends SpringTestSupport {
+
+    private static final Logger LOG = LogUtils
+            .getL7dLogger(CxfBCSEProviderAsyncSystemTest.class);
+
+    private static boolean serversStarted;
+
+    private ServerLauncher sl;
+
+    private ServerLauncher embeddedLauncher;
+
+    private ServerLauncher jmsLauncher;
+
+    private boolean success;
+
+    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;
+
+        assertTrue("server did not launch correctly", launchServer(
+                MyServer.class, props, false));
+
+        serversStarted = true;
+    }
+
+    protected void setUp() throws Exception {
+        startServers();
+        // super.setUp();
+        LOG.info("setUp is invoked");
+    }
+
+    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 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);
+
+    }
+
+    public void tearDown() throws Exception {
+        if (context != null) {
+            context.destroy();
+            context = null;
+        }
+        if (jbi != null) {
+            jbi.shutDown();
+            jbi.destroy();
+            jbi = null;
+        }
+
+        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());
+        }
+
+        try {
+            sl.stopServer();
+        } catch (IOException ex) {
+            ex.printStackTrace();
+            fail("failed to stop server " + sl.getClass());
+        }
+        serversStarted = false;
+    }
+
+    public void testGreetMeProviderWithHttpTransportAsync() throws Exception {
+        setUpJBI("org/apache/servicemix/cxfbc/provider/xbean_provider_async.xml");
+        greetMeProviderHttpTestBase();
+        assertTrue(success);
+    }
+
+    public void testGreetMeProviderWithJmsTransportAsync() throws Exception {
+        setUpJBI("org/apache/servicemix/cxfbc/provider/xbean_provider_async.xml");
+        greetMeProviderJmsTestBase();
+        assertTrue(success);
+    }
+
+    public void testGreetMeProviderWithHttpTransportSync() throws Exception {
+        setUpJBI("org/apache/servicemix/cxfbc/provider/xbean_provider_sync.xml");
+        greetMeProviderHttpTestBase();
+        assertTrue(success);
+    }
+
+    public void testGreetMeProviderWithJmsTransportSync() throws Exception {
+        setUpJBI("org/apache/servicemix/cxfbc/provider/xbean_provider_sync.xml");
+        greetMeProviderJmsTestBase();
+        assertTrue(success);
+    }
+
+    private void greetMeProviderHttpTestBase() throws Exception {
+        ClientInvocationForHttp thread1 = new ClientInvocationForHttp("wait");
+        thread1.start();
+        Thread.sleep(1000);
+        ClientInvocationForHttp thread2 = new ClientInvocationForHttp("fang");
+        thread2.start();
+        thread1.join();
+        thread2.join();
+    }
+
+    private void greetMeProviderJmsTestBase() throws Exception {
+        ClientInvocationForJms thread1 = new ClientInvocationForJms("wait");
+        thread1.start();
+        Thread.sleep(1000);
+        ClientInvocationForJms thread2 = new ClientInvocationForJms("fang");
+        thread2.start();
+        thread1.join();
+        thread2.join();
+
+    }
+
+    @Override
+    protected AbstractXmlApplicationContext createBeanFactory() {
+        // load cxf se and bc from spring config file
+        return new ClassPathXmlApplicationContext(
+                "org/apache/servicemix/cxfbc/provider/xbean_provider.xml");
+    }
+
+    protected AbstractXmlApplicationContext createBeanFactory(String beanFile) {
+        // load cxf se and bc from specified spring config file
+        return new ClassPathXmlApplicationContext(beanFile);
+    }
+
+    class ClientInvocationForHttp extends Thread {
+        private String greeting;
+
+        public ClientInvocationForHttp(String greeting) {
+            this.greeting = greeting;
+        }
+
+        public void run() {
+            DefaultServiceMixClient client;
+            try {
+                client = new DefaultServiceMixClient(jbi);
+                InOut io = client.createInOutExchange();
+                io.setService(new QName(
+                        "http://apache.org/hello_world_soap_http_provider",
+                        "SOAPService"));
+                io.setInterfaceName(new QName(
+                        "http://apache.org/hello_world_soap_http_provider",
+                        "Greeter"));
+                io.setOperation(new QName(
+                        "http://apache.org/hello_world_soap_http_provider",
+                        "greetMe"));
+                // send message to proxy
+                io
+                        .getInMessage()
+                        .setContent(
+                                new StringSource(
+                                        "<greetMe xmlns='http://apache.org/hello_world_soap_http_provider/types'><requestType>"
+                                                + greeting
+                                                + "</requestType></greetMe>"));
+
+                client.send(io);
+                client.receive(100000);
+                client.done(io);
+                if (io.getFault() != null) {
+                    success = false;
+                } else {
+                    success = true;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+        }
+
+    }
+
+    class ClientInvocationForJms extends Thread {
+        private String greeting;
+
+        public ClientInvocationForJms(String greeting) {
+            this.greeting = greeting;
+        }
+
+        public void run() {
+            DefaultServiceMixClient client;
+            try {
+                client = new DefaultServiceMixClient(jbi);
+                InOut io = client.createInOutExchange();
+                io.setService(new QName(
+                        "http://apache.org/hello_world_soap_http",
+                        "HelloWorldService"));
+                io.setInterfaceName(new QName(
+                        "http://apache.org/hello_world_soap_http", "Greeter"));
+                io.setOperation(new QName(
+                        "http://apache.org/hello_world_soap_http", "greetMe"));
+                // send message to proxy
+                io.getInMessage()
+                        .setContent(
+                                new StringSource(
+                                        "<greetMe xmlns='http://apache.org/hello_world_soap_http/types'><requestType>"
+                                                + greeting
+                                                + "</requestType></greetMe>"));
+
+                client.send(io);
+                client.receive(100000);
+                client.done(io);
+                if (io.getFault() != null) {
+                    success = false;
+                } else {
+                    success = true;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+        }
+
+    }
+
+}

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

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

Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/GreeterImpl.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/provider/GreeterImpl.java?rev=708114&r1=708113&r2=708114&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/GreeterImpl.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/GreeterImpl.java Mon Oct 27 02:38:31 2008
@@ -28,6 +28,15 @@
 
     public String greetMe(String me) {
         System.out.println("\n\n*** GreetMe called with: " + me + "***\n\n");
+        if ("wait".equals(me)) {
+            try {
+                Thread.sleep(10000);
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        }
+
         return "Hello " + me;
     }
 

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/TimeCompareInterceptor.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/provider/TimeCompareInterceptor.java?rev=708114&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/TimeCompareInterceptor.java (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/provider/TimeCompareInterceptor.java Mon Oct 27 02:38:31 2008
@@ -0,0 +1,65 @@
+/*
+ * 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.provider;
+
+import org.apache.cxf.binding.jbi.JBIFault;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+
+public class TimeCompareInterceptor extends AbstractPhaseInterceptor {
+
+    private long currentThreadId;
+
+    private long before;
+
+    private boolean firstInvocation = true;
+
+    public TimeCompareInterceptor() {
+        super(Phase.PRE_STREAM);
+    }
+
+    public void handleMessage(Message message) throws Fault {
+        if (firstInvocation) {
+            firstInvocation = false;
+            currentThreadId = Thread.currentThread().getId();
+            before = System.currentTimeMillis();
+        } else {
+            if (Thread.currentThread().getId() != currentThreadId) {
+                // ensure only one thread is used for the cxf bc provider
+                throw new JBIFault("not invoked by the same thread");
+            }
+            if (!message.getExchange().isSynchronous()) {
+                if (System.currentTimeMillis() - before > 10000) {
+                    // it's asynchronous way, so should use nonblcok invocation
+                    throw new JBIFault(
+                            "second invocation shouldn't wait the first invocation return");
+
+                }
+            } else {
+                if (System.currentTimeMillis() - before < 8000) {
+                    // it's synchronous way, so should use blcok invocation
+                    throw new JBIFault(
+                            "second invocation should wait until the first invocation return");
+
+                }
+            }
+        }
+    }
+
+}

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

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

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_async.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/provider/xbean_provider_async.xml?rev=708114&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_async.xml (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_async.xml Mon Oct 27 02:38:31 2008
@@ -0,0 +1,95 @@
+<?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:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
+       xmlns:test="urn:test"
+       xmlns:greeter="http://apache.org/hello_world_soap_http_provider"
+       xmlns:jmsgreeter="http://apache.org/hello_world_soap_http">
+
+
+       
+  <sm:container id="jbi" embedded="true">
+    <sm:executorFactory>
+    <bean class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl">
+      <property name="configs">
+        <map>
+          <entry key="flow.seda.servicemix-cxfbc">
+            <bean class="org.apache.servicemix.executors.impl.ExecutorConfig">
+              <property name="corePoolSize" value="1"/>
+              <property name="maximumPoolSize" value="1"/>
+              <property name="queueSize" value="-1"/>
+            </bean>
+          </entry>
+        </map>
+      </property>
+    </bean>
+  </sm:executorFactory>
+    
+    <sm:endpoints>      
+      
+            <cxfbc:provider wsdl="./hello_world.wsdl"
+                      locationURI="http://localhost:9000/SoapContext/SoapPort"
+                      endpoint="SoapPort"
+                      service="greeter:SOAPService"
+                      interfaceName="greeter:Greeter"                      
+                      useJBIWrapper="false"
+                      synchronous="false"
+                      >
+        <cxfbc:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inInterceptors>
+        <cxfbc:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+          <bean class="org.apache.servicemix.cxfbc.provider.TimeCompareInterceptor"/>
+        </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:provider>
+       
+      <cxfbc:provider wsdl="org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl"
+                      service="jmsgreeter:HelloWorldService"
+                      endpoint="HelloWorldPortProxy"
+                      interfaceName="jmsgreeter:Greetr"
+                      useJBIWrapper="false"
+                      synchronous="false"
+                     >
+          <cxfbc:inInterceptors>
+            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+          </cxfbc:inInterceptors>
+          <cxfbc:outInterceptors>
+            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+            <bean class="org.apache.servicemix.cxfbc.provider.TimeCompareInterceptor"/>
+          </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:provider>
+    </sm:endpoints>
+    
+  </sm:container>
+  
+</beans>

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

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

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

Added: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_sync.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/provider/xbean_provider_sync.xml?rev=708114&view=auto
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_sync.xml (added)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/resources/org/apache/servicemix/cxfbc/provider/xbean_provider_sync.xml Mon Oct 27 02:38:31 2008
@@ -0,0 +1,95 @@
+<?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:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
+       xmlns:test="urn:test"
+       xmlns:greeter="http://apache.org/hello_world_soap_http_provider"
+       xmlns:jmsgreeter="http://apache.org/hello_world_soap_http">
+
+
+       
+  <sm:container id="jbi" embedded="true">
+    <sm:executorFactory>
+    <bean class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl">
+      <property name="configs">
+        <map>
+           <entry key="flow.seda.servicemix-cxfbc">
+            <bean class="org.apache.servicemix.executors.impl.ExecutorConfig">
+              <property name="corePoolSize" value="1"/>
+              <property name="maximumPoolSize" value="1"/>
+              <property name="queueSize" value="-1"/>
+            </bean>
+          </entry>
+
+        </map>
+      </property>
+    </bean>
+  </sm:executorFactory>
+    
+    <sm:endpoints>      
+      
+            <cxfbc:provider wsdl="./hello_world.wsdl"
+                      locationURI="http://localhost:9000/SoapContext/SoapPort"
+                      endpoint="SoapPort"
+                      service="greeter:SOAPService"
+                      interfaceName="greeter:Greeter"                      
+                      useJBIWrapper="false"
+                      >
+        <cxfbc:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inInterceptors>
+        <cxfbc:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+          <bean class="org.apache.servicemix.cxfbc.provider.TimeCompareInterceptor"/>
+        </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:provider>
+       
+      <cxfbc:provider wsdl="org/apache/servicemix/cxfbc/ws/security/hello_world.wsdl"
+                      service="jmsgreeter:HelloWorldService"
+                      endpoint="HelloWorldPortProxy"
+                      interfaceName="jmsgreeter:Greetr"
+                      useJBIWrapper="false"
+                      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"/>
+            <bean class="org.apache.servicemix.cxfbc.provider.TimeCompareInterceptor"/>
+          </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:provider>
+    </sm:endpoints>
+    
+  </sm:container>
+  
+</beans>

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

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

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

Modified: servicemix/smx3/branches/servicemix-3.2/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/pom.xml?rev=708114&r1=708113&r2=708114&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/pom.xml (original)
+++ servicemix/smx3/branches/servicemix-3.2/pom.xml Mon Oct 27 02:38:31 2008
@@ -220,7 +220,7 @@
         <oro-version>2.0.8</oro-version>
         <sitemesh-version>2.2.1</sitemesh-version>
         <woden-version>1.0.0M6</woden-version>
-        <cxf-version>2.0.9</cxf-version>
+        <cxf-version>2.0.10-SNAPSHOT</cxf-version>
         <jaxb.version>2.0</jaxb.version>
         <jaxb.impl.version>2.0.1</jaxb.impl.version>
         <derby-version>10.2.2.0</derby-version>