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 <[email protected]> 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 <[email protected]> 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 <[email protected]>
>>>> 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 <[email protected]>
>>>>> 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 <[email protected]>
>>>>>> 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
>>>>>>> [email protected]
>>>>>>> http://www.dankulp.com/blog
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>
>> ---
>> Daniel Kulp
>> [email protected]
>> http://www.dankulp.com/blog
>>
>>
>>
>>
>>
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Need-Help%3A-How-to-configure-CXF-Client-use-a-CommonsHttpClientTransportFactory-tp18664583p21617180.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to