Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

View: New views
10 Messages — Rating Filter:   Alert me  

Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by Jian.Wu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Dan and Ulhas,

Thanks a lot for answering my previous message!

I tried to create a simple CommonsHttpClientTransportFactory with a simple
CommonsHttpClientConduit, and I tried to follow the suggestion Dan gave
at:
  http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394

I created a simple cxf-extension-commons-http.xml as:
===================================================
<import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
<bean class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
          id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
          lazy-init="false"
          depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
<property name="bus" ref="cxf"/>
<property name="transportIds">
<list>
<value>http://schemas.xmlsoap.org/soap/http</value>
<value>http://schemas.xmlsoap.org/wsdl/http/</value>
<value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
<value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
<value>http://cxf.apache.org/transports/http/configuration</value>
<value>http://cxf.apache.org/bindings/xformat</value>
</list>
</property>
</bean>
====================================================

I created a simple WSDL2Java generated client, and I can see my
client logging output as:
====================================================
Jul 26, 2008 12:28:11 AM
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf.xml]
Jul 26, 2008 12:28:12 AM
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-extension-commons-http.xml]
Jul 26, 2008 12:28:12 AM
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-extension-http.xml]
Jul 26, 2008 12:28:12 AM
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource
[META-INF/cxf/cxf-extension-object-binding.xml]
====================================================

Also, from my registerWithBindingManager() method, I tried to ensure
that the following namespaces are registered with the new
CommonsHTTPClientTransportFactory as:
====================================================
For http://schemas.xmlsoap.org/soap/http,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://schemas.xmlsoap.org/wsdl/http/,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://schemas.xmlsoap.org/wsdl/soap/http,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://www.w3.org/2003/05/soap/bindings/HTTP/,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://cxf.apache.org/transports/http/configuration,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://cxf.apache.org/bindings/xformat,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
===================================================

But, my client still uses the HTTPConduit as the following code snippet
==================================================
Client client = ClientProxy.getClient( port );
           
System.out.println( client.getConduit().getClass().getSimpleName() );
System.out.println( client.getConduitSelector().getClass().getSimpleName() );
System.out.println( client.getEndpoint().getEndpointInfo().getTransportId() );
==================================================
with output:

HTTPConduit
UpfrontConduitSelector
http://schemas.xmlsoap.org/soap/http

Is there any extra configuration steps required to let CXF Client use
my CommonsHttpClientConduit?

I really appreciate any tip and suggestion from your guys.

Thanks a lot for your help!

Jian

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by nicolas de loof-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

Will you publish your work somewhere, or propose as a patch/contrib ?

I also expected such support for commons-httpclient but had no time left to
investigate more :-/

Nicolas

2008/7/26 jian wu <hellojianwu@...>

> Hi Dan and Ulhas,
>
> Thanks a lot for answering my previous message!
>
> I tried to create a simple CommonsHttpClientTransportFactory with a simple
> CommonsHttpClientConduit, and I tried to follow the suggestion Dan gave
> at:
>
> http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>
> I created a simple cxf-extension-commons-http.xml as:
> ===================================================
> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
> <bean
> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>
>  id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>          lazy-init="false"
>
>  depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
> <property name="bus" ref="cxf"/>
> <property name="transportIds">
> <list>
> <value>http://schemas.xmlsoap.org/soap/http</value>
> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
> <value>http://cxf.apache.org/transports/http/configuration</value>
> <value>http://cxf.apache.org/bindings/xformat</value>
> </list>
> </property>
> </bean>
> ====================================================
>
> I created a simple WSDL2Java generated client, and I can see my
> client logging output as:
> ====================================================
> Jul 26, 2008 12:28:11 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf.xml]
> Jul 26, 2008 12:28:12 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-commons-http.xml]
> Jul 26, 2008 12:28:12 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-http.xml]
> Jul 26, 2008 12:28:12 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-object-binding.xml]
> ====================================================
>
> Also, from my registerWithBindingManager() method, I tried to ensure
> that the following namespaces are registered with the new
> CommonsHTTPClientTransportFactory as:
> ====================================================
> For http://schemas.xmlsoap.org/soap/http,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://schemas.xmlsoap.org/wsdl/http/,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://schemas.xmlsoap.org/wsdl/soap/http,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://cxf.apache.org/transports/http/configuration,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://cxf.apache.org/bindings/xformat,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> ===================================================
>
> But, my client still uses the HTTPConduit as the following code snippet
> ==================================================
> Client client = ClientProxy.getClient( port );
>
> System.out.println( client.getConduit().getClass().getSimpleName() );
> System.out.println( client.getConduitSelector().getClass().getSimpleName()
> );
> System.out.println( client.getEndpoint().getEndpointInfo().getTransportId()
> );
> ==================================================
> with output:
>
> HTTPConduit
> UpfrontConduitSelector
> http://schemas.xmlsoap.org/soap/http
>
> Is there any extra configuration steps required to let CXF Client use
> my CommonsHttpClientConduit?
>
> I really appreciate any tip and suggestion from your guys.
>
> Thanks a lot for your help!
>
> Jian
>

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by dkulp :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Not really sure.   That all looks completely correct.   The ClientOnly  
factory should register first (since you depend on it), then yours  
should get called and register.   (You have a @PostConstruct method,  
right?)   I guess my suggestion would be to put breakpoints in the  
Conduit manager stuff to see what is registered.

Dan


On Jul 26, 2008, at 4:35 AM, jian wu wrote:

> Hi Dan and Ulhas,
>
> Thanks a lot for answering my previous message!
>
> I tried to create a simple CommonsHttpClientTransportFactory with a  
> simple
> CommonsHttpClientConduit, and I tried to follow the suggestion Dan  
> gave
> at:
>  http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>
> I created a simple cxf-extension-commons-http.xml as:
> ===================================================
> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
> <bean  
> class
> ="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>          
> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>          lazy-init="false"
>          depends-
> on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
> <property name="bus" ref="cxf"/>
> <property name="transportIds">
> <list>
> <value>http://schemas.xmlsoap.org/soap/http</value>
> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
> <value>http://cxf.apache.org/transports/http/configuration</value>
> <value>http://cxf.apache.org/bindings/xformat</value>
> </list>
> </property>
> </bean>
> ====================================================
>
> I created a simple WSDL2Java generated client, and I can see my
> client logging output as:
> ====================================================
> Jul 26, 2008 12:28:11 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf.xml]
> Jul 26, 2008 12:28:12 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-commons-http.xml]
> Jul 26, 2008 12:28:12 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-http.xml]
> Jul 26, 2008 12:28:12 AM
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
> loadBeanDefinitions
> INFO: Loading XML bean definitions from class path resource
> [META-INF/cxf/cxf-extension-object-binding.xml]
> ====================================================
>
> Also, from my registerWithBindingManager() method, I tried to ensure
> that the following namespaces are registered with the new
> CommonsHTTPClientTransportFactory as:
> ====================================================
> For http://schemas.xmlsoap.org/soap/http,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://schemas.xmlsoap.org/wsdl/http/,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://schemas.xmlsoap.org/wsdl/soap/http,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://cxf.apache.org/transports/http/configuration,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://cxf.apache.org/bindings/xformat,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> ===================================================
>
> But, my client still uses the HTTPConduit as the following code  
> snippet
> ==================================================
> Client client = ClientProxy.getClient( port );
>    
> System.out.println( client.getConduit().getClass().getSimpleName() );
> System
> .out
> .println( client.getConduitSelector().getClass().getSimpleName() );
> System
> .out
> .println( client.getEndpoint().getEndpointInfo().getTransportId() );
> ==================================================
> with output:
>
> HTTPConduit
> UpfrontConduitSelector
> http://schemas.xmlsoap.org/soap/http
>
> Is there any extra configuration steps required to let CXF Client use
> my CommonsHttpClientConduit?
>
> I really appreciate any tip and suggestion from your guys.
>
> Thanks a lot for your help!
>
> Jian

---
Daniel Kulp
dkulp@...
http://www.dankulp.com/blog





Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by Jian.Wu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Dan,

> The ClientOnly factory should register first (since you depend on it), then yours
> should get called and register.   (You have a @PostConstruct method, right?)

The following is my code snippet for PostConstruct:
=============================================================
@PostConstruct
 public void registerWithBindingManager() {
    // ...
    ConduitInitiatorManager cim =
bus.getExtension(ConduitInitiatorManager.class);
    if (null != cim && null != activationNamespaces) {
      for (String ns : activationNamespaces) {
      try {
          ConduitInitiator initor = cim.getConduitInitiator( ns );
          if ( initor != null ) {
           System.out.println( "For " + ns + ", " + initor.getClass().getName() );
           cim.deregisterConduitInitiator( ns );
          } else {
           System.out.println( "For " + ns + ", null" );
          }
        } catch (BusException e) {
   e.printStackTrace();
        }
                               
       cim.registerConduitInitiator(ns, this);
     }

     System.out.println();
     System.out.println( "Checking ConduitInitiator Mapping:" );

     for (String ns : activationNamespaces) {
      try {
       ConduitInitiator initor = cim.getConduitInitiator( ns );
       if ( initor != null ) {
         System.out.println( "For " + ns + ", " + initor.getClass().getName() );
       } else {
         System.out.println( "For " + ns + ", null" );
       }
     } catch (BusException e) {
        e.printStackTrace();
     }
   }
 }

 initHttpClient();

 if ( this.httpClientInitialized.get() ) {
   System.out.println( "Commons HttpClient Initialized" );
 } else {
   System.out.println( "Commons HttpClient Failed to initialize" );
 }
 //...
}
=========================================================
with output:

=========================================================
For http://schemas.xmlsoap.org/soap/http,
org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
For http://schemas.xmlsoap.org/wsdl/http/,
org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
For http://schemas.xmlsoap.org/wsdl/soap/http,
org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
For http://www.w3.org/2003/05/soap/bindings/HTTP/,
org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
For http://cxf.apache.org/transports/http/configuration,
org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
For http://cxf.apache.org/bindings/xformat,
org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory

Checking ConduitInitiator Mapping:
For http://schemas.xmlsoap.org/soap/http,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://schemas.xmlsoap.org/wsdl/http/,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://schemas.xmlsoap.org/wsdl/soap/http,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://www.w3.org/2003/05/soap/bindings/HTTP/,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://cxf.apache.org/transports/http/configuration,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
For http://cxf.apache.org/bindings/xformat,
org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
Commons HttpClient Initialized
==================================================

But, I can see my Client still is still using HTTPConduit. Is it too later
or any other configuration point or name
"org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
referenced?  so far I can only make it work by renaming them as
ClientOnlyHTTPTransportFactory and delete the original one from
cxf-2.1.1.jar.

> I guess my suggestion would be to put breakpoints in the Conduit manager stuff
> to see what is registered.

I'll try to do it.

Thanks a lot for your help!

Jian


On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@...> wrote:

>
> Not really sure.   That all looks completely correct.   The ClientOnly
> factory should register first (since you depend on it), then yours should
> get called and register.   (You have a @PostConstruct method, right?)   I
> guess my suggestion would be to put breakpoints in the Conduit manager stuff
> to see what is registered.
>
> Dan
>
>
> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>
>> Hi Dan and Ulhas,
>>
>> Thanks a lot for answering my previous message!
>>
>> I tried to create a simple CommonsHttpClientTransportFactory with a simple
>> CommonsHttpClientConduit, and I tried to follow the suggestion Dan gave
>> at:
>>
>>  http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>
>> I created a simple cxf-extension-commons-http.xml as:
>> ===================================================
>> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>> <bean
>> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>
>> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>         lazy-init="false"
>>
>> depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>> <property name="bus" ref="cxf"/>
>> <property name="transportIds">
>> <list>
>> <value>http://schemas.xmlsoap.org/soap/http</value>
>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>> <value>http://cxf.apache.org/transports/http/configuration</value>
>> <value>http://cxf.apache.org/bindings/xformat</value>
>> </list>
>> </property>
>> </bean>
>> ====================================================
>>
>> I created a simple WSDL2Java generated client, and I can see my
>> client logging output as:
>> ====================================================
>> Jul 26, 2008 12:28:11 AM
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf.xml]
>> Jul 26, 2008 12:28:12 AM
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf-extension-commons-http.xml]
>> Jul 26, 2008 12:28:12 AM
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf-extension-http.xml]
>> Jul 26, 2008 12:28:12 AM
>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>> loadBeanDefinitions
>> INFO: Loading XML bean definitions from class path resource
>> [META-INF/cxf/cxf-extension-object-binding.xml]
>> ====================================================
>>
>> Also, from my registerWithBindingManager() method, I tried to ensure
>> that the following namespaces are registered with the new
>> CommonsHTTPClientTransportFactory as:
>> ====================================================
>> For http://schemas.xmlsoap.org/soap/http,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://schemas.xmlsoap.org/wsdl/http/,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://cxf.apache.org/transports/http/configuration,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://cxf.apache.org/bindings/xformat,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> ===================================================
>>
>> But, my client still uses the HTTPConduit as the following code snippet
>> ==================================================
>> Client client = ClientProxy.getClient( port );
>>
>> System.out.println( client.getConduit().getClass().getSimpleName() );
>> System.out.println( client.getConduitSelector().getClass().getSimpleName()
>> );
>> System.out.println(
>> client.getEndpoint().getEndpointInfo().getTransportId() );
>> ==================================================
>> with output:
>>
>> HTTPConduit
>> UpfrontConduitSelector
>> http://schemas.xmlsoap.org/soap/http
>>
>> Is there any extra configuration steps required to let CXF Client use
>> my CommonsHttpClientConduit?
>>
>> I really appreciate any tip and suggestion from your guys.
>>
>> Thanks a lot for your help!
>>
>> Jian
>
> ---
> Daniel Kulp
> dkulp@...
> http://www.dankulp.com/blog
>
>
>
>
>

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by Jian.Wu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Dan,

I just went to some code debugging, it seems like that:
AbstractConduitSelector.getSelectedConduit(), which is called by
UpfrontConduitSelector.selectConduit(), returns JettyHTTPTransportFactory
for "http://schemas.xmlsoap.org/soap/http", it'll initiate HTTPConduit,

I just quickly searched cxf configuration file, I'm not sure that the
following configuration in bus-extensions.xml in cxf-2.1.1.jar is
related to this:
==================================================
<extension class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
deferred="true">
    <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
    <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
    <namespace>http://www.w3.org/2003/05/soap/bindings/HTTP/</namespace>
    <namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
    <namespace>http://cxf.apache.org/transports/http/configuration</namespace>
    <namespace>http://cxf.apache.org/bindings/xformat</namespace>
  </extension>
==================================================

Any suggestion or tip to resolve this would be really appreciated.

Thanks a lot for your help!

Jian


On Mon, Jul 28, 2008 at 12:58 PM, jian wu <hellojianwu@...> wrote:

> Hi Dan,
>
>> The ClientOnly factory should register first (since you depend on it), then yours
>> should get called and register.   (You have a @PostConstruct method, right?)
>
> The following is my code snippet for PostConstruct:
> =============================================================
> @PostConstruct
>  public void registerWithBindingManager() {
>    // ...
>    ConduitInitiatorManager cim =
> bus.getExtension(ConduitInitiatorManager.class);
>    if (null != cim && null != activationNamespaces) {
>      for (String ns : activationNamespaces) {
>        try {
>          ConduitInitiator initor = cim.getConduitInitiator( ns );
>          if ( initor != null ) {
>           System.out.println( "For " + ns + ", " + initor.getClass().getName() );
>           cim.deregisterConduitInitiator( ns );
>          } else {
>           System.out.println( "For " + ns + ", null" );
>          }
>        } catch (BusException e) {
>          e.printStackTrace();
>        }
>
>       cim.registerConduitInitiator(ns, this);
>     }
>
>     System.out.println();
>     System.out.println( "Checking ConduitInitiator Mapping:" );
>
>     for (String ns : activationNamespaces) {
>      try {
>       ConduitInitiator initor = cim.getConduitInitiator( ns );
>       if ( initor != null ) {
>         System.out.println( "For " + ns + ", " + initor.getClass().getName() );
>       } else {
>         System.out.println( "For " + ns + ", null" );
>       }
>     } catch (BusException e) {
>        e.printStackTrace();
>     }
>   }
>  }
>
>  initHttpClient();
>
>  if ( this.httpClientInitialized.get() ) {
>   System.out.println( "Commons HttpClient Initialized" );
>  } else {
>   System.out.println( "Commons HttpClient Failed to initialize" );
>  }
>  //...
> }
> =========================================================
> with output:
>
> =========================================================
> For http://schemas.xmlsoap.org/soap/http,
> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
> For http://schemas.xmlsoap.org/wsdl/http/,
> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
> For http://schemas.xmlsoap.org/wsdl/soap/http,
> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
> For http://cxf.apache.org/transports/http/configuration,
> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
> For http://cxf.apache.org/bindings/xformat,
> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>
> Checking ConduitInitiator Mapping:
> For http://schemas.xmlsoap.org/soap/http,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://schemas.xmlsoap.org/wsdl/http/,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://schemas.xmlsoap.org/wsdl/soap/http,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://cxf.apache.org/transports/http/configuration,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> For http://cxf.apache.org/bindings/xformat,
> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
> Commons HttpClient Initialized
> ==================================================
>
> But, I can see my Client still is still using HTTPConduit. Is it too later
> or any other configuration point or name
> "org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
> referenced?  so far I can only make it work by renaming them as
> ClientOnlyHTTPTransportFactory and delete the original one from
> cxf-2.1.1.jar.
>
>> I guess my suggestion would be to put breakpoints in the Conduit manager stuff
>> to see what is registered.
>
> I'll try to do it.
>
> Thanks a lot for your help!
>
> Jian
>
>
> On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@...> wrote:
>>
>> Not really sure.   That all looks completely correct.   The ClientOnly
>> factory should register first (since you depend on it), then yours should
>> get called and register.   (You have a @PostConstruct method, right?)   I
>> guess my suggestion would be to put breakpoints in the Conduit manager stuff
>> to see what is registered.
>>
>> Dan
>>
>>
>> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>>
>>> Hi Dan and Ulhas,
>>>
>>> Thanks a lot for answering my previous message!
>>>
>>> I tried to create a simple CommonsHttpClientTransportFactory with a simple
>>> CommonsHttpClientConduit, and I tried to follow the suggestion Dan gave
>>> at:
>>>
>>>  http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>>
>>> I created a simple cxf-extension-commons-http.xml as:
>>> ===================================================
>>> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>> <bean
>>> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>
>>> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>         lazy-init="false"
>>>
>>> depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>> <property name="bus" ref="cxf"/>
>>> <property name="transportIds">
>>> <list>
>>> <value>http://schemas.xmlsoap.org/soap/http</value>
>>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>> <value>http://cxf.apache.org/bindings/xformat</value>
>>> </list>
>>> </property>
>>> </bean>
>>> ====================================================
>>>
>>> I created a simple WSDL2Java generated client, and I can see my
>>> client logging output as:
>>> ====================================================
>>> Jul 26, 2008 12:28:11 AM
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>> loadBeanDefinitions
>>> INFO: Loading XML bean definitions from class path resource
>>> [META-INF/cxf/cxf.xml]
>>> Jul 26, 2008 12:28:12 AM
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>> loadBeanDefinitions
>>> INFO: Loading XML bean definitions from class path resource
>>> [META-INF/cxf/cxf-extension-commons-http.xml]
>>> Jul 26, 2008 12:28:12 AM
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>> loadBeanDefinitions
>>> INFO: Loading XML bean definitions from class path resource
>>> [META-INF/cxf/cxf-extension-http.xml]
>>> Jul 26, 2008 12:28:12 AM
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>> loadBeanDefinitions
>>> INFO: Loading XML bean definitions from class path resource
>>> [META-INF/cxf/cxf-extension-object-binding.xml]
>>> ====================================================
>>>
>>> Also, from my registerWithBindingManager() method, I tried to ensure
>>> that the following namespaces are registered with the new
>>> CommonsHTTPClientTransportFactory as:
>>> ====================================================
>>> For http://schemas.xmlsoap.org/soap/http,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://cxf.apache.org/transports/http/configuration,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://cxf.apache.org/bindings/xformat,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> ===================================================
>>>
>>> But, my client still uses the HTTPConduit as the following code snippet
>>> ==================================================
>>> Client client = ClientProxy.getClient( port );
>>>
>>> System.out.println( client.getConduit().getClass().getSimpleName() );
>>> System.out.println( client.getConduitSelector().getClass().getSimpleName()
>>> );
>>> System.out.println(
>>> client.getEndpoint().getEndpointInfo().getTransportId() );
>>> ==================================================
>>> with output:
>>>
>>> HTTPConduit
>>> UpfrontConduitSelector
>>> http://schemas.xmlsoap.org/soap/http
>>>
>>> Is there any extra configuration steps required to let CXF Client use
>>> my CommonsHttpClientConduit?
>>>
>>> I really appreciate any tip and suggestion from your guys.
>>>
>>> Thanks a lot for your help!
>>>
>>> Jian
>>
>> ---
>> Daniel Kulp
>> dkulp@...
>> http://www.dankulp.com/blog
>>
>>
>>
>>
>>
>

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by Jian.Wu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Dan,

Just want to add that cxf-extension-http-jetty.xml in cxf-2.1.1.jar
has a similar
configuration as:
=====================================================
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:foo="http://cxf.apache.org/configuration/foo"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

        <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />

    <bean class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
          id="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
    lazy-init="false"
    depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
        <property name="bus" ref="cxf"/>
        <property name="transportIds">
            <list>
                <value>http://schemas.xmlsoap.org/soap/http</value>
                <value>http://schemas.xmlsoap.org/wsdl/http/</value>
                <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
             <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>

<value>http://cxf.apache.org/transports/http/configuration</value>
                <value>http://cxf.apache.org/bindings/xformat</value>
            </list>
        </property>
    </bean>

</beans>
=============================================================

Thanks a lot!

Jian

On Mon, Jul 28, 2008 at 11:04 PM, jian wu <hellojianwu@...> wrote:

> Hi Dan,
>
> I just went to some code debugging, it seems like that:
> AbstractConduitSelector.getSelectedConduit(), which is called by
> UpfrontConduitSelector.selectConduit(), returns JettyHTTPTransportFactory
> for "http://schemas.xmlsoap.org/soap/http", it'll initiate HTTPConduit,
>
> I just quickly searched cxf configuration file, I'm not sure that the
> following configuration in bus-extensions.xml in cxf-2.1.1.jar is
> related to this:
> ==================================================
> <extension class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
> deferred="true">
>    <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
>    <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
>    <namespace>http://www.w3.org/2003/05/soap/bindings/HTTP/</namespace>
>    <namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
>    <namespace>http://cxf.apache.org/transports/http/configuration</namespace>
>    <namespace>http://cxf.apache.org/bindings/xformat</namespace>
>  </extension>
> ==================================================
>
> Any suggestion or tip to resolve this would be really appreciated.
>
> Thanks a lot for your help!
>
> Jian
>
>
> On Mon, Jul 28, 2008 at 12:58 PM, jian wu <hellojianwu@...> wrote:
>> Hi Dan,
>>
>>> The ClientOnly factory should register first (since you depend on it), then yours
>>> should get called and register.   (You have a @PostConstruct method, right?)
>>
>> The following is my code snippet for PostConstruct:
>> =============================================================
>> @PostConstruct
>>  public void registerWithBindingManager() {
>>    // ...
>>    ConduitInitiatorManager cim =
>> bus.getExtension(ConduitInitiatorManager.class);
>>    if (null != cim && null != activationNamespaces) {
>>      for (String ns : activationNamespaces) {
>>        try {
>>          ConduitInitiator initor = cim.getConduitInitiator( ns );
>>          if ( initor != null ) {
>>           System.out.println( "For " + ns + ", " + initor.getClass().getName() );
>>           cim.deregisterConduitInitiator( ns );
>>          } else {
>>           System.out.println( "For " + ns + ", null" );
>>          }
>>        } catch (BusException e) {
>>          e.printStackTrace();
>>        }
>>
>>       cim.registerConduitInitiator(ns, this);
>>     }
>>
>>     System.out.println();
>>     System.out.println( "Checking ConduitInitiator Mapping:" );
>>
>>     for (String ns : activationNamespaces) {
>>      try {
>>       ConduitInitiator initor = cim.getConduitInitiator( ns );
>>       if ( initor != null ) {
>>         System.out.println( "For " + ns + ", " + initor.getClass().getName() );
>>       } else {
>>         System.out.println( "For " + ns + ", null" );
>>       }
>>     } catch (BusException e) {
>>        e.printStackTrace();
>>     }
>>   }
>>  }
>>
>>  initHttpClient();
>>
>>  if ( this.httpClientInitialized.get() ) {
>>   System.out.println( "Commons HttpClient Initialized" );
>>  } else {
>>   System.out.println( "Commons HttpClient Failed to initialize" );
>>  }
>>  //...
>> }
>> =========================================================
>> with output:
>>
>> =========================================================
>> For http://schemas.xmlsoap.org/soap/http,
>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>> For http://schemas.xmlsoap.org/wsdl/http/,
>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>> For http://cxf.apache.org/transports/http/configuration,
>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>> For http://cxf.apache.org/bindings/xformat,
>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>
>> Checking ConduitInitiator Mapping:
>> For http://schemas.xmlsoap.org/soap/http,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://schemas.xmlsoap.org/wsdl/http/,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://cxf.apache.org/transports/http/configuration,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> For http://cxf.apache.org/bindings/xformat,
>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>> Commons HttpClient Initialized
>> ==================================================
>>
>> But, I can see my Client still is still using HTTPConduit. Is it too later
>> or any other configuration point or name
>> "org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
>> referenced?  so far I can only make it work by renaming them as
>> ClientOnlyHTTPTransportFactory and delete the original one from
>> cxf-2.1.1.jar.
>>
>>> I guess my suggestion would be to put breakpoints in the Conduit manager stuff
>>> to see what is registered.
>>
>> I'll try to do it.
>>
>> Thanks a lot for your help!
>>
>> Jian
>>
>>
>> On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@...> wrote:
>>>
>>> Not really sure.   That all looks completely correct.   The ClientOnly
>>> factory should register first (since you depend on it), then yours should
>>> get called and register.   (You have a @PostConstruct method, right?)   I
>>> guess my suggestion would be to put breakpoints in the Conduit manager stuff
>>> to see what is registered.
>>>
>>> Dan
>>>
>>>
>>> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>>>
>>>> Hi Dan and Ulhas,
>>>>
>>>> Thanks a lot for answering my previous message!
>>>>
>>>> I tried to create a simple CommonsHttpClientTransportFactory with a simple
>>>> CommonsHttpClientConduit, and I tried to follow the suggestion Dan gave
>>>> at:
>>>>
>>>>  http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>>>
>>>> I created a simple cxf-extension-commons-http.xml as:
>>>> ===================================================
>>>> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>>> <bean
>>>> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>
>>>> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>         lazy-init="false"
>>>>
>>>> depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>> <property name="bus" ref="cxf"/>
>>>> <property name="transportIds">
>>>> <list>
>>>> <value>http://schemas.xmlsoap.org/soap/http</value>
>>>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>>> <value>http://cxf.apache.org/bindings/xformat</value>
>>>> </list>
>>>> </property>
>>>> </bean>
>>>> ====================================================
>>>>
>>>> I created a simple WSDL2Java generated client, and I can see my
>>>> client logging output as:
>>>> ====================================================
>>>> Jul 26, 2008 12:28:11 AM
>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>> loadBeanDefinitions
>>>> INFO: Loading XML bean definitions from class path resource
>>>> [META-INF/cxf/cxf.xml]
>>>> Jul 26, 2008 12:28:12 AM
>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>> loadBeanDefinitions
>>>> INFO: Loading XML bean definitions from class path resource
>>>> [META-INF/cxf/cxf-extension-commons-http.xml]
>>>> Jul 26, 2008 12:28:12 AM
>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>> loadBeanDefinitions
>>>> INFO: Loading XML bean definitions from class path resource
>>>> [META-INF/cxf/cxf-extension-http.xml]
>>>> Jul 26, 2008 12:28:12 AM
>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>> loadBeanDefinitions
>>>> INFO: Loading XML bean definitions from class path resource
>>>> [META-INF/cxf/cxf-extension-object-binding.xml]
>>>> ====================================================
>>>>
>>>> Also, from my registerWithBindingManager() method, I tried to ensure
>>>> that the following namespaces are registered with the new
>>>> CommonsHTTPClientTransportFactory as:
>>>> ====================================================
>>>> For http://schemas.xmlsoap.org/soap/http,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://cxf.apache.org/transports/http/configuration,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://cxf.apache.org/bindings/xformat,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> ===================================================
>>>>
>>>> But, my client still uses the HTTPConduit as the following code snippet
>>>> ==================================================
>>>> Client client = ClientProxy.getClient( port );
>>>>
>>>> System.out.println( client.getConduit().getClass().getSimpleName() );
>>>> System.out.println( client.getConduitSelector().getClass().getSimpleName()
>>>> );
>>>> System.out.println(
>>>> client.getEndpoint().getEndpointInfo().getTransportId() );
>>>> ==================================================
>>>> with output:
>>>>
>>>> HTTPConduit
>>>> UpfrontConduitSelector
>>>> http://schemas.xmlsoap.org/soap/http
>>>>
>>>> Is there any extra configuration steps required to let CXF Client use
>>>> my CommonsHttpClientConduit?
>>>>
>>>> I really appreciate any tip and suggestion from your guys.
>>>>
>>>> Thanks a lot for your help!
>>>>
>>>> Jian
>>>
>>> ---
>>> Daniel Kulp
>>> dkulp@...
>>> http://www.dankulp.com/blog
>>>
>>>
>>>
>>>
>>>
>>
>

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by Jian.Wu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Dan,

It seems that I just need change my cxf-extension-commons-http.xml
to depends on "JettyHTTPTransportFactory" instead and my simple
CommonsHTTPClientConduit prototype was called finally. It would be
great that you can confirm that is the right way to inject HTTP Conduit
into CXF Client.

Thanks a lot for your help!

Jian


On Mon, Jul 28, 2008 at 11:24 PM, jian wu <hellojianwu@...> wrote:

> Hi Dan,
>
> Just want to add that cxf-extension-http-jetty.xml in cxf-2.1.1.jar
> has a similar
> configuration as:
> =====================================================
> <beans xmlns="http://www.springframework.org/schema/beans"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>       xmlns:foo="http://cxf.apache.org/configuration/foo"
>       xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd">
>
>        <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>
>    <bean class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>          id="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>        lazy-init="false"
>        depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>        <property name="bus" ref="cxf"/>
>        <property name="transportIds">
>            <list>
>                <value>http://schemas.xmlsoap.org/soap/http</value>
>                <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>                <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>                    <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>
> <value>http://cxf.apache.org/transports/http/configuration</value>
>                <value>http://cxf.apache.org/bindings/xformat</value>
>            </list>
>        </property>
>    </bean>
>
> </beans>
> =============================================================
>
> Thanks a lot!
>
> Jian
>
> On Mon, Jul 28, 2008 at 11:04 PM, jian wu <hellojianwu@...> wrote:
>> Hi Dan,
>>
>> I just went to some code debugging, it seems like that:
>> AbstractConduitSelector.getSelectedConduit(), which is called by
>> UpfrontConduitSelector.selectConduit(), returns JettyHTTPTransportFactory
>> for "http://schemas.xmlsoap.org/soap/http", it'll initiate HTTPConduit,
>>
>> I just quickly searched cxf configuration file, I'm not sure that the
>> following configuration in bus-extensions.xml in cxf-2.1.1.jar is
>> related to this:
>> ==================================================
>> <extension class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>> deferred="true">
>>    <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
>>    <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
>>    <namespace>http://www.w3.org/2003/05/soap/bindings/HTTP/</namespace>
>>    <namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
>>    <namespace>http://cxf.apache.org/transports/http/configuration</namespace>
>>    <namespace>http://cxf.apache.org/bindings/xformat</namespace>
>>  </extension>
>> ==================================================
>>
>> Any suggestion or tip to resolve this would be really appreciated.
>>
>> Thanks a lot for your help!
>>
>> Jian
>>
>>
>> On Mon, Jul 28, 2008 at 12:58 PM, jian wu <hellojianwu@...> wrote:
>>> Hi Dan,
>>>
>>>> The ClientOnly factory should register first (since you depend on it), then yours
>>>> should get called and register.   (You have a @PostConstruct method, right?)
>>>
>>> The following is my code snippet for PostConstruct:
>>> =============================================================
>>> @PostConstruct
>>>  public void registerWithBindingManager() {
>>>    // ...
>>>    ConduitInitiatorManager cim =
>>> bus.getExtension(ConduitInitiatorManager.class);
>>>    if (null != cim && null != activationNamespaces) {
>>>      for (String ns : activationNamespaces) {
>>>        try {
>>>          ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>          if ( initor != null ) {
>>>           System.out.println( "For " + ns + ", " + initor.getClass().getName() );
>>>           cim.deregisterConduitInitiator( ns );
>>>          } else {
>>>           System.out.println( "For " + ns + ", null" );
>>>          }
>>>        } catch (BusException e) {
>>>          e.printStackTrace();
>>>        }
>>>
>>>       cim.registerConduitInitiator(ns, this);
>>>     }
>>>
>>>     System.out.println();
>>>     System.out.println( "Checking ConduitInitiator Mapping:" );
>>>
>>>     for (String ns : activationNamespaces) {
>>>      try {
>>>       ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>       if ( initor != null ) {
>>>         System.out.println( "For " + ns + ", " + initor.getClass().getName() );
>>>       } else {
>>>         System.out.println( "For " + ns + ", null" );
>>>       }
>>>     } catch (BusException e) {
>>>        e.printStackTrace();
>>>     }
>>>   }
>>>  }
>>>
>>>  initHttpClient();
>>>
>>>  if ( this.httpClientInitialized.get() ) {
>>>   System.out.println( "Commons HttpClient Initialized" );
>>>  } else {
>>>   System.out.println( "Commons HttpClient Failed to initialize" );
>>>  }
>>>  //...
>>> }
>>> =========================================================
>>> with output:
>>>
>>> =========================================================
>>> For http://schemas.xmlsoap.org/soap/http,
>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>> For http://cxf.apache.org/transports/http/configuration,
>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>> For http://cxf.apache.org/bindings/xformat,
>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>
>>> Checking ConduitInitiator Mapping:
>>> For http://schemas.xmlsoap.org/soap/http,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://cxf.apache.org/transports/http/configuration,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> For http://cxf.apache.org/bindings/xformat,
>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>> Commons HttpClient Initialized
>>> ==================================================
>>>
>>> But, I can see my Client still is still using HTTPConduit. Is it too later
>>> or any other configuration point or name
>>> "org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
>>> referenced?  so far I can only make it work by renaming them as
>>> ClientOnlyHTTPTransportFactory and delete the original one from
>>> cxf-2.1.1.jar.
>>>
>>>> I guess my suggestion would be to put breakpoints in the Conduit manager stuff
>>>> to see what is registered.
>>>
>>> I'll try to do it.
>>>
>>> Thanks a lot for your help!
>>>
>>> Jian
>>>
>>>
>>> On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@...> wrote:
>>>>
>>>> Not really sure.   That all looks completely correct.   The ClientOnly
>>>> factory should register first (since you depend on it), then yours should
>>>> get called and register.   (You have a @PostConstruct method, right?)   I
>>>> guess my suggestion would be to put breakpoints in the Conduit manager stuff
>>>> to see what is registered.
>>>>
>>>> Dan
>>>>
>>>>
>>>> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>>>>
>>>>> Hi Dan and Ulhas,
>>>>>
>>>>> Thanks a lot for answering my previous message!
>>>>>
>>>>> I tried to create a simple CommonsHttpClientTransportFactory with a simple
>>>>> CommonsHttpClientConduit, and I tried to follow the suggestion Dan gave
>>>>> at:
>>>>>
>>>>>  http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>>>>
>>>>> I created a simple cxf-extension-commons-http.xml as:
>>>>> ===================================================
>>>>> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>>>> <bean
>>>>> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>
>>>>> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>         lazy-init="false"
>>>>>
>>>>> depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>>> <property name="bus" ref="cxf"/>
>>>>> <property name="transportIds">
>>>>> <list>
>>>>> <value>http://schemas.xmlsoap.org/soap/http</value>
>>>>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>>>> <value>http://cxf.apache.org/bindings/xformat</value>
>>>>> </list>
>>>>> </property>
>>>>> </bean>
>>>>> ====================================================
>>>>>
>>>>> I created a simple WSDL2Java generated client, and I can see my
>>>>> client logging output as:
>>>>> ====================================================
>>>>> Jul 26, 2008 12:28:11 AM
>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>> loadBeanDefinitions
>>>>> INFO: Loading XML bean definitions from class path resource
>>>>> [META-INF/cxf/cxf.xml]
>>>>> Jul 26, 2008 12:28:12 AM
>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>> loadBeanDefinitions
>>>>> INFO: Loading XML bean definitions from class path resource
>>>>> [META-INF/cxf/cxf-extension-commons-http.xml]
>>>>> Jul 26, 2008 12:28:12 AM
>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>> loadBeanDefinitions
>>>>> INFO: Loading XML bean definitions from class path resource
>>>>> [META-INF/cxf/cxf-extension-http.xml]
>>>>> Jul 26, 2008 12:28:12 AM
>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>> loadBeanDefinitions
>>>>> INFO: Loading XML bean definitions from class path resource
>>>>> [META-INF/cxf/cxf-extension-object-binding.xml]
>>>>> ====================================================
>>>>>
>>>>> Also, from my registerWithBindingManager() method, I tried to ensure
>>>>> that the following namespaces are registered with the new
>>>>> CommonsHTTPClientTransportFactory as:
>>>>> ====================================================
>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> ===================================================
>>>>>
>>>>> But, my client still uses the HTTPConduit as the following code snippet
>>>>> ==================================================
>>>>> Client client = ClientProxy.getClient( port );
>>>>>
>>>>> System.out.println( client.getConduit().getClass().getSimpleName() );
>>>>> System.out.println( client.getConduitSelector().getClass().getSimpleName()
>>>>> );
>>>>> System.out.println(
>>>>> client.getEndpoint().getEndpointInfo().getTransportId() );
>>>>> ==================================================
>>>>> with output:
>>>>>
>>>>> HTTPConduit
>>>>> UpfrontConduitSelector
>>>>> http://schemas.xmlsoap.org/soap/http
>>>>>
>>>>> Is there any extra configuration steps required to let CXF Client use
>>>>> my CommonsHttpClientConduit?
>>>>>
>>>>> I really appreciate any tip and suggestion from your guys.
>>>>>
>>>>> Thanks a lot for your help!
>>>>>
>>>>> Jian
>>>>
>>>> ---
>>>> Daniel Kulp
>>>> dkulp@...
>>>> http://www.dankulp.com/blog
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by dkulp :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Right.   That would do it.   Since Jetty subclasses the same stuff as  
the ClientOnly stuff, it would also replace the client only stuff with  
it's version.

Dan


On Jul 29, 2008, at 2:50 AM, jian wu wrote:

> Hi Dan,
>
> It seems that I just need change my cxf-extension-commons-http.xml
> to depends on "JettyHTTPTransportFactory" instead and my simple
> CommonsHTTPClientConduit prototype was called finally. It would be
> great that you can confirm that is the right way to inject HTTP  
> Conduit
> into CXF Client.
>
> Thanks a lot for your help!
>
> Jian
>
>
> On Mon, Jul 28, 2008 at 11:24 PM, jian wu <hellojianwu@...>  
> wrote:
>> Hi Dan,
>>
>> Just want to add that cxf-extension-http-jetty.xml in cxf-2.1.1.jar
>> has a similar
>> configuration as:
>> =====================================================
>> <beans xmlns="http://www.springframework.org/schema/beans"
>>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>      xmlns:foo="http://cxf.apache.org/configuration/foo"
>>      xsi:schemaLocation="
>> http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans.xsd">
>>
>>       <import resource="classpath:META-INF/cxf/cxf-extension-
>> http.xml" />
>>
>>   <bean  
>> class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>          
>> id="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>       lazy-init="false"
>>       depends-
>> on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>       <property name="bus" ref="cxf"/>
>>       <property name="transportIds">
>>           <list>
>>               <value>http://schemas.xmlsoap.org/soap/http</value>
>>               <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>               <value>http://schemas.xmlsoap.org/wsdl/soap/http</
>> value>
>>                   <value>http://www.w3.org/2003/05/soap/bindings/HTTP/ 
>> </value>
>>
>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>               <value>http://cxf.apache.org/bindings/xformat</value>
>>           </list>
>>       </property>
>>   </bean>
>>
>> </beans>
>> =============================================================
>>
>> Thanks a lot!
>>
>> Jian
>>
>> On Mon, Jul 28, 2008 at 11:04 PM, jian wu <hellojianwu@...>  
>> wrote:
>>> Hi Dan,
>>>
>>> I just went to some code debugging, it seems like that:
>>> AbstractConduitSelector.getSelectedConduit(), which is called by
>>> UpfrontConduitSelector.selectConduit(), returns  
>>> JettyHTTPTransportFactory
>>> for "http://schemas.xmlsoap.org/soap/http", it'll initiate  
>>> HTTPConduit,
>>>
>>> I just quickly searched cxf configuration file, I'm not sure that  
>>> the
>>> following configuration in bus-extensions.xml in cxf-2.1.1.jar is
>>> related to this:
>>> ==================================================
>>> <extension  
>>> class
>>> ="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>> deferred="true">
>>>   <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
>>>   <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
>>>   <namespace>http://www.w3.org/2003/05/soap/bindings/HTTP/</
>>> namespace>
>>>   <namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
>>>   <namespace>http://cxf.apache.org/transports/http/configuration</
>>> namespace>
>>>   <namespace>http://cxf.apache.org/bindings/xformat</namespace>
>>> </extension>
>>> ==================================================
>>>
>>> Any suggestion or tip to resolve this would be really appreciated.
>>>
>>> Thanks a lot for your help!
>>>
>>> Jian
>>>
>>>
>>> On Mon, Jul 28, 2008 at 12:58 PM, jian wu <hellojianwu@...>  
>>> wrote:
>>>> Hi Dan,
>>>>
>>>>> The ClientOnly factory should register first (since you depend  
>>>>> on it), then yours
>>>>> should get called and register.   (You have a @PostConstruct  
>>>>> method, right?)
>>>>
>>>> The following is my code snippet for PostConstruct:
>>>> =============================================================
>>>> @PostConstruct
>>>> public void registerWithBindingManager() {
>>>>   // ...
>>>>   ConduitInitiatorManager cim =
>>>> bus.getExtension(ConduitInitiatorManager.class);
>>>>   if (null != cim && null != activationNamespaces) {
>>>>     for (String ns : activationNamespaces) {
>>>>       try {
>>>>         ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>>         if ( initor != null ) {
>>>>          System.out.println( "For " + ns + ", " +  
>>>> initor.getClass().getName() );
>>>>          cim.deregisterConduitInitiator( ns );
>>>>         } else {
>>>>          System.out.println( "For " + ns + ", null" );
>>>>         }
>>>>       } catch (BusException e) {
>>>>         e.printStackTrace();
>>>>       }
>>>>
>>>>      cim.registerConduitInitiator(ns, this);
>>>>    }
>>>>
>>>>    System.out.println();
>>>>    System.out.println( "Checking ConduitInitiator Mapping:" );
>>>>
>>>>    for (String ns : activationNamespaces) {
>>>>     try {
>>>>      ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>>      if ( initor != null ) {
>>>>        System.out.println( "For " + ns + ", " +  
>>>> initor.getClass().getName() );
>>>>      } else {
>>>>        System.out.println( "For " + ns + ", null" );
>>>>      }
>>>>    } catch (BusException e) {
>>>>       e.printStackTrace();
>>>>    }
>>>>  }
>>>> }
>>>>
>>>> initHttpClient();
>>>>
>>>> if ( this.httpClientInitialized.get() ) {
>>>>  System.out.println( "Commons HttpClient Initialized" );
>>>> } else {
>>>>  System.out.println( "Commons HttpClient Failed to initialize" );
>>>> }
>>>> //...
>>>> }
>>>> =========================================================
>>>> with output:
>>>>
>>>> =========================================================
>>>> For http://schemas.xmlsoap.org/soap/http,
>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>> For http://cxf.apache.org/transports/http/configuration,
>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>> For http://cxf.apache.org/bindings/xformat,
>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>
>>>> Checking ConduitInitiator Mapping:
>>>> For http://schemas.xmlsoap.org/soap/http,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://cxf.apache.org/transports/http/configuration,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> For http://cxf.apache.org/bindings/xformat,
>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>> Commons HttpClient Initialized
>>>> ==================================================
>>>>
>>>> But, I can see my Client still is still using HTTPConduit. Is it  
>>>> too later
>>>> or any other configuration point or name
>>>> "org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
>>>> referenced?  so far I can only make it work by renaming them as
>>>> ClientOnlyHTTPTransportFactory and delete the original one from
>>>> cxf-2.1.1.jar.
>>>>
>>>>> I guess my suggestion would be to put breakpoints in the Conduit  
>>>>> manager stuff
>>>>> to see what is registered.
>>>>
>>>> I'll try to do it.
>>>>
>>>> Thanks a lot for your help!
>>>>
>>>> Jian
>>>>
>>>>
>>>> On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@...>  
>>>> wrote:
>>>>>
>>>>> Not really sure.   That all looks completely correct.   The  
>>>>> ClientOnly
>>>>> factory should register first (since you depend on it), then  
>>>>> yours should
>>>>> get called and register.   (You have a @PostConstruct method,  
>>>>> right?)   I
>>>>> guess my suggestion would be to put breakpoints in the Conduit  
>>>>> manager stuff
>>>>> to see what is registered.
>>>>>
>>>>> Dan
>>>>>
>>>>>
>>>>> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>>>>>
>>>>>> Hi Dan and Ulhas,
>>>>>>
>>>>>> Thanks a lot for answering my previous message!
>>>>>>
>>>>>> I tried to create a simple CommonsHttpClientTransportFactory  
>>>>>> with a simple
>>>>>> CommonsHttpClientConduit, and I tried to follow the suggestion  
>>>>>> Dan gave
>>>>>> at:
>>>>>>
>>>>>> http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>>>>>
>>>>>> I created a simple cxf-extension-commons-http.xml as:
>>>>>> ===================================================
>>>>>> <import resource="classpath:META-INF/cxf/cxf-extension-
>>>>>> http.xml" />
>>>>>> <bean
>>>>>> class
>>>>>> =
>>>>>> "org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>>
>>>>>> id
>>>>>> =
>>>>>> "org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>>        lazy-init="false"
>>>>>>
>>>>>> depends-
>>>>>> on
>>>>>> ="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>>>> <property name="bus" ref="cxf"/>
>>>>>> <property name="transportIds">
>>>>>> <list>
>>>>>> <value>http://schemas.xmlsoap.org/soap/http</value>
>>>>>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>>>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>>>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>>>> <value>http://cxf.apache.org/transports/http/configuration</
>>>>>> value>
>>>>>> <value>http://cxf.apache.org/bindings/xformat</value>
>>>>>> </list>
>>>>>> </property>
>>>>>> </bean>
>>>>>> ====================================================
>>>>>>
>>>>>> I created a simple WSDL2Java generated client, and I can see my
>>>>>> client logging output as:
>>>>>> ====================================================
>>>>>> Jul 26, 2008 12:28:11 AM
>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>> loadBeanDefinitions
>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>> [META-INF/cxf/cxf.xml]
>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>> loadBeanDefinitions
>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>> [META-INF/cxf/cxf-extension-commons-http.xml]
>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>> loadBeanDefinitions
>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>> [META-INF/cxf/cxf-extension-http.xml]
>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>> loadBeanDefinitions
>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>> [META-INF/cxf/cxf-extension-object-binding.xml]
>>>>>> ====================================================
>>>>>>
>>>>>> Also, from my registerWithBindingManager() method, I tried to  
>>>>>> ensure
>>>>>> that the following namespaces are registered with the new
>>>>>> CommonsHTTPClientTransportFactory as:
>>>>>> ====================================================
>>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>> ===================================================
>>>>>>
>>>>>> But, my client still uses the HTTPConduit as the following code  
>>>>>> snippet
>>>>>> ==================================================
>>>>>> Client client = ClientProxy.getClient( port );
>>>>>>
>>>>>> System
>>>>>> .out.println( client.getConduit().getClass().getSimpleName() );
>>>>>> System
>>>>>> .out
>>>>>> .println( client.getConduitSelector().getClass().getSimpleName()
>>>>>> );
>>>>>> System.out.println(
>>>>>> client.getEndpoint().getEndpointInfo().getTransportId() );
>>>>>> ==================================================
>>>>>> with output:
>>>>>>
>>>>>> HTTPConduit
>>>>>> UpfrontConduitSelector
>>>>>> http://schemas.xmlsoap.org/soap/http
>>>>>>
>>>>>> Is there any extra configuration steps required to let CXF  
>>>>>> Client use
>>>>>> my CommonsHttpClientConduit?
>>>>>>
>>>>>> I really appreciate any tip and suggestion from your guys.
>>>>>>
>>>>>> Thanks a lot for your help!
>>>>>>
>>>>>> Jian
>>>>>
>>>>> ---
>>>>> Daniel Kulp
>>>>> dkulp@...
>>>>> http://www.dankulp.com/blog
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>

---
Daniel Kulp
dkulp@...
http://www.dankulp.com/blog





Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by Jian.Wu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Dan,

Thanks a lot!

Jian

On Tue, Jul 29, 2008 at 5:34 AM, Daniel Kulp <dkulp@...> wrote:

>
> Right.   That would do it.   Since Jetty subclasses the same stuff as the
> ClientOnly stuff, it would also replace the client only stuff with it's
> version.
>
> Dan
>
>
> On Jul 29, 2008, at 2:50 AM, jian wu wrote:
>
>> Hi Dan,
>>
>> It seems that I just need change my cxf-extension-commons-http.xml
>> to depends on "JettyHTTPTransportFactory" instead and my simple
>> CommonsHTTPClientConduit prototype was called finally. It would be
>> great that you can confirm that is the right way to inject HTTP Conduit
>> into CXF Client.
>>
>> Thanks a lot for your help!
>>
>> Jian
>>
>>
>> On Mon, Jul 28, 2008 at 11:24 PM, jian wu <hellojianwu@...> wrote:
>>>
>>> Hi Dan,
>>>
>>> Just want to add that cxf-extension-http-jetty.xml in cxf-2.1.1.jar
>>> has a similar
>>> configuration as:
>>> =====================================================
>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>     xmlns:foo="http://cxf.apache.org/configuration/foo"
>>>     xsi:schemaLocation="
>>> http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans.xsd">
>>>
>>>      <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>>
>>>  <bean
>>> class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>>        id="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>>      lazy-init="false"
>>>
>>>  depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>      <property name="bus" ref="cxf"/>
>>>      <property name="transportIds">
>>>          <list>
>>>              <value>http://schemas.xmlsoap.org/soap/http</value>
>>>              <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>              <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>
>>>  <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>
>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>>              <value>http://cxf.apache.org/bindings/xformat</value>
>>>          </list>
>>>      </property>
>>>  </bean>
>>>
>>> </beans>
>>> =============================================================
>>>
>>> Thanks a lot!
>>>
>>> Jian
>>>
>>> On Mon, Jul 28, 2008 at 11:04 PM, jian wu <hellojianwu@...> wrote:
>>>>
>>>> Hi Dan,
>>>>
>>>> I just went to some code debugging, it seems like that:
>>>> AbstractConduitSelector.getSelectedConduit(), which is called by
>>>> UpfrontConduitSelector.selectConduit(), returns
>>>> JettyHTTPTransportFactory
>>>> for "http://schemas.xmlsoap.org/soap/http", it'll initiate HTTPConduit,
>>>>
>>>> I just quickly searched cxf configuration file, I'm not sure that the
>>>> following configuration in bus-extensions.xml in cxf-2.1.1.jar is
>>>> related to this:
>>>> ==================================================
>>>> <extension
>>>> class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>>> deferred="true">
>>>>  <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
>>>>  <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
>>>>  <namespace>http://www.w3.org/2003/05/soap/bindings/HTTP/</namespace>
>>>>  <namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
>>>>
>>>>  <namespace>http://cxf.apache.org/transports/http/configuration</namespace>
>>>>  <namespace>http://cxf.apache.org/bindings/xformat</namespace>
>>>> </extension>
>>>> ==================================================
>>>>
>>>> Any suggestion or tip to resolve this would be really appreciated.
>>>>
>>>> Thanks a lot for your help!
>>>>
>>>> Jian
>>>>
>>>>
>>>> On Mon, Jul 28, 2008 at 12:58 PM, jian wu <hellojianwu@...> wrote:
>>>>>
>>>>> Hi Dan,
>>>>>
>>>>>> The ClientOnly factory should register first (since you depend on it),
>>>>>> then yours
>>>>>> should get called and register.   (You have a @PostConstruct method,
>>>>>> right?)
>>>>>
>>>>> The following is my code snippet for PostConstruct:
>>>>> =============================================================
>>>>> @PostConstruct
>>>>> public void registerWithBindingManager() {
>>>>>  // ...
>>>>>  ConduitInitiatorManager cim =
>>>>> bus.getExtension(ConduitInitiatorManager.class);
>>>>>  if (null != cim && null != activationNamespaces) {
>>>>>    for (String ns : activationNamespaces) {
>>>>>      try {
>>>>>        ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>>>        if ( initor != null ) {
>>>>>         System.out.println( "For " + ns + ", " +
>>>>> initor.getClass().getName() );
>>>>>         cim.deregisterConduitInitiator( ns );
>>>>>        } else {
>>>>>         System.out.println( "For " + ns + ", null" );
>>>>>        }
>>>>>      } catch (BusException e) {
>>>>>        e.printStackTrace();
>>>>>      }
>>>>>
>>>>>     cim.registerConduitInitiator(ns, this);
>>>>>   }
>>>>>
>>>>>   System.out.println();
>>>>>   System.out.println( "Checking ConduitInitiator Mapping:" );
>>>>>
>>>>>   for (String ns : activationNamespaces) {
>>>>>    try {
>>>>>     ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>>>     if ( initor != null ) {
>>>>>       System.out.println( "For " + ns + ", " +
>>>>> initor.getClass().getName() );
>>>>>     } else {
>>>>>       System.out.println( "For " + ns + ", null" );
>>>>>     }
>>>>>   } catch (BusException e) {
>>>>>      e.printStackTrace();
>>>>>   }
>>>>>  }
>>>>> }
>>>>>
>>>>> initHttpClient();
>>>>>
>>>>> if ( this.httpClientInitialized.get() ) {
>>>>>  System.out.println( "Commons HttpClient Initialized" );
>>>>> } else {
>>>>>  System.out.println( "Commons HttpClient Failed to initialize" );
>>>>> }
>>>>> //...
>>>>> }
>>>>> =========================================================
>>>>> with output:
>>>>>
>>>>> =========================================================
>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>>
>>>>> Checking ConduitInitiator Mapping:
>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> Commons HttpClient Initialized
>>>>> ==================================================
>>>>>
>>>>> But, I can see my Client still is still using HTTPConduit. Is it too
>>>>> later
>>>>> or any other configuration point or name
>>>>> "org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
>>>>> referenced?  so far I can only make it work by renaming them as
>>>>> ClientOnlyHTTPTransportFactory and delete the original one from
>>>>> cxf-2.1.1.jar.
>>>>>
>>>>>> I guess my suggestion would be to put breakpoints in the Conduit
>>>>>> manager stuff
>>>>>> to see what is registered.
>>>>>
>>>>> I'll try to do it.
>>>>>
>>>>> Thanks a lot for your help!
>>>>>
>>>>> Jian
>>>>>
>>>>>
>>>>> On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@...> wrote:
>>>>>>
>>>>>> Not really sure.   That all looks completely correct.   The ClientOnly
>>>>>> factory should register first (since you depend on it), then yours
>>>>>> should
>>>>>> get called and register.   (You have a @PostConstruct method, right?)
>>>>>>   I
>>>>>> guess my suggestion would be to put breakpoints in the Conduit manager
>>>>>> stuff
>>>>>> to see what is registered.
>>>>>>
>>>>>> Dan
>>>>>>
>>>>>>
>>>>>> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>>>>>>
>>>>>>> Hi Dan and Ulhas,
>>>>>>>
>>>>>>> Thanks a lot for answering my previous message!
>>>>>>>
>>>>>>> I tried to create a simple CommonsHttpClientTransportFactory with a
>>>>>>> simple
>>>>>>> CommonsHttpClientConduit, and I tried to follow the suggestion Dan
>>>>>>> gave
>>>>>>> at:
>>>>>>>
>>>>>>>
>>>>>>> http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>>>>>>
>>>>>>> I created a simple cxf-extension-commons-http.xml as:
>>>>>>> ===================================================
>>>>>>> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>>>>>> <bean
>>>>>>>
>>>>>>> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>>>
>>>>>>> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>>>       lazy-init="false"
>>>>>>>
>>>>>>>
>>>>>>> depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>>>>> <property name="bus" ref="cxf"/>
>>>>>>> <property name="transportIds">
>>>>>>> <list>
>>>>>>> <value>http://schemas.xmlsoap.org/soap/http</value>
>>>>>>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>>>>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>>>>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>>>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>>>>>> <value>http://cxf.apache.org/bindings/xformat</value>
>>>>>>> </list>
>>>>>>> </property>
>>>>>>> </bean>
>>>>>>> ====================================================
>>>>>>>
>>>>>>> I created a simple WSDL2Java generated client, and I can see my
>>>>>>> client logging output as:
>>>>>>> ====================================================
>>>>>>> Jul 26, 2008 12:28:11 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf.xml]
>>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf-extension-commons-http.xml]
>>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf-extension-http.xml]
>>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf-extension-object-binding.xml]
>>>>>>> ====================================================
>>>>>>>
>>>>>>> Also, from my registerWithBindingManager() method, I tried to ensure
>>>>>>> that the following namespaces are registered with the new
>>>>>>> CommonsHTTPClientTransportFactory as:
>>>>>>> ====================================================
>>>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> ===================================================
>>>>>>>
>>>>>>> But, my client still uses the HTTPConduit as the following code
>>>>>>> snippet
>>>>>>> ==================================================
>>>>>>> Client client = ClientProxy.getClient( port );
>>>>>>>
>>>>>>> System.out.println( client.getConduit().getClass().getSimpleName() );
>>>>>>> System.out.println(
>>>>>>> client.getConduitSelector().getClass().getSimpleName()
>>>>>>> );
>>>>>>> System.out.println(
>>>>>>> client.getEndpoint().getEndpointInfo().getTransportId() );
>>>>>>> ==================================================
>>>>>>> with output:
>>>>>>>
>>>>>>> HTTPConduit
>>>>>>> UpfrontConduitSelector
>>>>>>> http://schemas.xmlsoap.org/soap/http
>>>>>>>
>>>>>>> Is there any extra configuration steps required to let CXF Client use
>>>>>>> my CommonsHttpClientConduit?
>>>>>>>
>>>>>>> I really appreciate any tip and suggestion from your guys.
>>>>>>>
>>>>>>> Thanks a lot for your help!
>>>>>>>
>>>>>>> Jian
>>>>>>
>>>>>> ---
>>>>>> Daniel Kulp
>>>>>> dkulp@...
>>>>>> http://www.dankulp.com/blog
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>
> ---
> Daniel Kulp
> dkulp@...
> http://www.dankulp.com/blog
>
>
>
>
>

Re: Need Help: How to configure CXF Client use a CommonsHttpClientTransportFactory

by krause :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Did it work?
Would you mind sharing your code?
Thanks.

Jian.Wu wrote:
Hi Dan,

Thanks a lot!

Jian

On Tue, Jul 29, 2008 at 5:34 AM, Daniel Kulp <dkulp@apache.org> wrote:
>
> Right.   That would do it.   Since Jetty subclasses the same stuff as the
> ClientOnly stuff, it would also replace the client only stuff with it's
> version.
>
> Dan
>
>
> On Jul 29, 2008, at 2:50 AM, jian wu wrote:
>
>> Hi Dan,
>>
>> It seems that I just need change my cxf-extension-commons-http.xml
>> to depends on "JettyHTTPTransportFactory" instead and my simple
>> CommonsHTTPClientConduit prototype was called finally. It would be
>> great that you can confirm that is the right way to inject HTTP Conduit
>> into CXF Client.
>>
>> Thanks a lot for your help!
>>
>> Jian
>>
>>
>> On Mon, Jul 28, 2008 at 11:24 PM, jian wu <hellojianwu@gmail.com> wrote:
>>>
>>> Hi Dan,
>>>
>>> Just want to add that cxf-extension-http-jetty.xml in cxf-2.1.1.jar
>>> has a similar
>>> configuration as:
>>> =====================================================
>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>     xmlns:foo="http://cxf.apache.org/configuration/foo"
>>>     xsi:schemaLocation="
>>> http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans.xsd">
>>>
>>>      <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>>
>>>  <bean
>>> class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>>        id="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>>      lazy-init="false"
>>>
>>>  depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>      <property name="bus" ref="cxf"/>
>>>      <property name="transportIds">
>>>          <list>
>>>              <value>http://schemas.xmlsoap.org/soap/http</value>
>>>              <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>              <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>
>>>  <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>
>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>>              <value>http://cxf.apache.org/bindings/xformat</value>
>>>          </list>
>>>      </property>
>>>  </bean>
>>>
>>> </beans>
>>> =============================================================
>>>
>>> Thanks a lot!
>>>
>>> Jian
>>>
>>> On Mon, Jul 28, 2008 at 11:04 PM, jian wu <hellojianwu@gmail.com> wrote:
>>>>
>>>> Hi Dan,
>>>>
>>>> I just went to some code debugging, it seems like that:
>>>> AbstractConduitSelector.getSelectedConduit(), which is called by
>>>> UpfrontConduitSelector.selectConduit(), returns
>>>> JettyHTTPTransportFactory
>>>> for "http://schemas.xmlsoap.org/soap/http", it'll initiate HTTPConduit,
>>>>
>>>> I just quickly searched cxf configuration file, I'm not sure that the
>>>> following configuration in bus-extensions.xml in cxf-2.1.1.jar is
>>>> related to this:
>>>> ==================================================
>>>> <extension
>>>> class="org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory"
>>>> deferred="true">
>>>>  <namespace>http://schemas.xmlsoap.org/wsdl/soap/http</namespace>
>>>>  <namespace>http://schemas.xmlsoap.org/soap/http</namespace>
>>>>  <namespace>http://www.w3.org/2003/05/soap/bindings/HTTP/</namespace>
>>>>  <namespace>http://schemas.xmlsoap.org/wsdl/http/</namespace>
>>>>
>>>>  <namespace>http://cxf.apache.org/transports/http/configuration</namespace>
>>>>  <namespace>http://cxf.apache.org/bindings/xformat</namespace>
>>>> </extension>
>>>> ==================================================
>>>>
>>>> Any suggestion or tip to resolve this would be really appreciated.
>>>>
>>>> Thanks a lot for your help!
>>>>
>>>> Jian
>>>>
>>>>
>>>> On Mon, Jul 28, 2008 at 12:58 PM, jian wu <hellojianwu@gmail.com> wrote:
>>>>>
>>>>> Hi Dan,
>>>>>
>>>>>> The ClientOnly factory should register first (since you depend on it),
>>>>>> then yours
>>>>>> should get called and register.   (You have a @PostConstruct method,
>>>>>> right?)
>>>>>
>>>>> The following is my code snippet for PostConstruct:
>>>>> =============================================================
>>>>> @PostConstruct
>>>>> public void registerWithBindingManager() {
>>>>>  // ...
>>>>>  ConduitInitiatorManager cim =
>>>>> bus.getExtension(ConduitInitiatorManager.class);
>>>>>  if (null != cim && null != activationNamespaces) {
>>>>>    for (String ns : activationNamespaces) {
>>>>>      try {
>>>>>        ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>>>        if ( initor != null ) {
>>>>>         System.out.println( "For " + ns + ", " +
>>>>> initor.getClass().getName() );
>>>>>         cim.deregisterConduitInitiator( ns );
>>>>>        } else {
>>>>>         System.out.println( "For " + ns + ", null" );
>>>>>        }
>>>>>      } catch (BusException e) {
>>>>>        e.printStackTrace();
>>>>>      }
>>>>>
>>>>>     cim.registerConduitInitiator(ns, this);
>>>>>   }
>>>>>
>>>>>   System.out.println();
>>>>>   System.out.println( "Checking ConduitInitiator Mapping:" );
>>>>>
>>>>>   for (String ns : activationNamespaces) {
>>>>>    try {
>>>>>     ConduitInitiator initor = cim.getConduitInitiator( ns );
>>>>>     if ( initor != null ) {
>>>>>       System.out.println( "For " + ns + ", " +
>>>>> initor.getClass().getName() );
>>>>>     } else {
>>>>>       System.out.println( "For " + ns + ", null" );
>>>>>     }
>>>>>   } catch (BusException e) {
>>>>>      e.printStackTrace();
>>>>>   }
>>>>>  }
>>>>> }
>>>>>
>>>>> initHttpClient();
>>>>>
>>>>> if ( this.httpClientInitialized.get() ) {
>>>>>  System.out.println( "Commons HttpClient Initialized" );
>>>>> } else {
>>>>>  System.out.println( "Commons HttpClient Failed to initialize" );
>>>>> }
>>>>> //...
>>>>> }
>>>>> =========================================================
>>>>> with output:
>>>>>
>>>>> =========================================================
>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>> org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory
>>>>>
>>>>> Checking ConduitInitiator Mapping:
>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>> Commons HttpClient Initialized
>>>>> ==================================================
>>>>>
>>>>> But, I can see my Client still is still using HTTPConduit. Is it too
>>>>> later
>>>>> or any other configuration point or name
>>>>> "org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory" is
>>>>> referenced?  so far I can only make it work by renaming them as
>>>>> ClientOnlyHTTPTransportFactory and delete the original one from
>>>>> cxf-2.1.1.jar.
>>>>>
>>>>>> I guess my suggestion would be to put breakpoints in the Conduit
>>>>>> manager stuff
>>>>>> to see what is registered.
>>>>>
>>>>> I'll try to do it.
>>>>>
>>>>> Thanks a lot for your help!
>>>>>
>>>>> Jian
>>>>>
>>>>>
>>>>> On Mon, Jul 28, 2008 at 6:48 AM, Daniel Kulp <dkulp@apache.org> wrote:
>>>>>>
>>>>>> Not really sure.   That all looks completely correct.   The ClientOnly
>>>>>> factory should register first (since you depend on it), then yours
>>>>>> should
>>>>>> get called and register.   (You have a @PostConstruct method, right?)
>>>>>>   I
>>>>>> guess my suggestion would be to put breakpoints in the Conduit manager
>>>>>> stuff
>>>>>> to see what is registered.
>>>>>>
>>>>>> Dan
>>>>>>
>>>>>>
>>>>>> On Jul 26, 2008, at 4:35 AM, jian wu wrote:
>>>>>>
>>>>>>> Hi Dan and Ulhas,
>>>>>>>
>>>>>>> Thanks a lot for answering my previous message!
>>>>>>>
>>>>>>> I tried to create a simple CommonsHttpClientTransportFactory with a
>>>>>>> simple
>>>>>>> CommonsHttpClientConduit, and I tried to follow the suggestion Dan
>>>>>>> gave
>>>>>>> at:
>>>>>>>
>>>>>>>
>>>>>>> http://www.nabble.com/Using-HTTPClient-as-a-transport-td14715325.html#a16815394
>>>>>>>
>>>>>>> I created a simple cxf-extension-commons-http.xml as:
>>>>>>> ===================================================
>>>>>>> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>>>>>>> <bean
>>>>>>>
>>>>>>> class="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>>>
>>>>>>> id="org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory"
>>>>>>>       lazy-init="false"
>>>>>>>
>>>>>>>
>>>>>>> depends-on="org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory">
>>>>>>> <property name="bus" ref="cxf"/>
>>>>>>> <property name="transportIds">
>>>>>>> <list>
>>>>>>> <value>http://schemas.xmlsoap.org/soap/http</value>
>>>>>>> <value>http://schemas.xmlsoap.org/wsdl/http/</value>
>>>>>>> <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>>>>>>> <value>http://www.w3.org/2003/05/soap/bindings/HTTP/</value>
>>>>>>> <value>http://cxf.apache.org/transports/http/configuration</value>
>>>>>>> <value>http://cxf.apache.org/bindings/xformat</value>
>>>>>>> </list>
>>>>>>> </property>
>>>>>>> </bean>
>>>>>>> ====================================================
>>>>>>>
>>>>>>> I created a simple WSDL2Java generated client, and I can see my
>>>>>>> client logging output as:
>>>>>>> ====================================================
>>>>>>> Jul 26, 2008 12:28:11 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf.xml]
>>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf-extension-commons-http.xml]
>>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf-extension-http.xml]
>>>>>>> Jul 26, 2008 12:28:12 AM
>>>>>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader
>>>>>>> loadBeanDefinitions
>>>>>>> INFO: Loading XML bean definitions from class path resource
>>>>>>> [META-INF/cxf/cxf-extension-object-binding.xml]
>>>>>>> ====================================================
>>>>>>>
>>>>>>> Also, from my registerWithBindingManager() method, I tried to ensure
>>>>>>> that the following namespaces are registered with the new
>>>>>>> CommonsHTTPClientTransportFactory as:
>>>>>>> ====================================================
>>>>>>> For http://schemas.xmlsoap.org/soap/http,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://schemas.xmlsoap.org/wsdl/http/,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://schemas.xmlsoap.org/wsdl/soap/http,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://www.w3.org/2003/05/soap/bindings/HTTP/,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://cxf.apache.org/transports/http/configuration,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> For http://cxf.apache.org/bindings/xformat,
>>>>>>> org.apache.cxf.transport.http.CommonsHTTPClientTransportFactory
>>>>>>> ===================================================
>>>>>>>
>>>>>>> But, my client still uses the HTTPConduit as the following code
>>>>>>> snippet
>>>>>>> ==================================================
>>>>>>> Client client = ClientProxy.getClient( port );
>>>>>>>
>>>>>>> System.out.println( client.getConduit().getClass().getSimpleName() );
>>>>>>> System.out.println(
>>>>>>> client.getConduitSelector().getClass().getSimpleName()
>>>>>>> );
>>>>>>> System.out.println(
>>>>>>> client.getEndpoint().getEndpointInfo().getTransportId() );
>>>>>>> ==================================================
>>>>>>> with output:
>>>>>>>
>>>>>>> HTTPConduit
>>>>>>> UpfrontConduitSelector
>>>>>>> http://schemas.xmlsoap.org/soap/http
>>>>>>>
>>>>>>> Is there any extra configuration steps required to let CXF Client use
>>>>>>> my CommonsHttpClientConduit?
>>>>>>>
>>>>>>> I really appreciate any tip and suggestion from your guys.
>>>>>>>
>>>>>>> Thanks a lot for your help!
>>>>>>>
>>>>>>> Jian
>>>>>>
>>>>>> ---
>>>>>> Daniel Kulp
>>>>>> dkulp@apache.org
>>>>>> http://www.dankulp.com/blog
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>
> ---
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog
>
>
>
>
>