改变HttpTransportFactory cxf 2.7.3

时间:2013-07-10 14:35:21

标签: java apache web-services cxf

我正在尝试更改cxf HttpURLConnection使用的HTTPTransportFactory

Cxf(版本2.7.3)使用HTTPTransportFactory进行http / https请求。 HTTPTransportFactory使用URLConnectionHTTPConduit类型的管道。 URLConnectionHTTPConduit有方法:createConnection,返回HttpURLConnection。 我需要将HttpURLConnection替换为我自己的自定义版本,我们称之为CustomHttpURLConnection

我设法更改了cxf使用的TransportFactory

  1. 创建扩展HTTPTransportFactory的类:CustomHTTPTransportFactory(此时此类为空):

    public class CustomTransportFactory extends HTTPTransportFactory{
    }
    
  2. CustomTransportFactory注册到正确的传输ID:在这种情况下http://schemas.xmlsoap.org/soap/http

  3. 这是我的XML:

    <beans:bean id="tranpo" class="CustomTransportFactory" lazy-init="false">    
        <beans:property name="transportIds">
                      <beans:list>
                     <beans:value>"http://schemas.xmlsoap.org/soap/http"</beans:value>
              </beans:list>
        </beans:property>
    </beans:bean>
    

    但是,我需要能够将CustomHttpURLConnection注册到cxf transport HTTPTransportFactory

    有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

创建一个HTTPConduitFactory并在上下文中注册它。然后,HTTPTransportFactory将使用它来创建管道,而不是创建默认的基于URLConnection的管道。这就是如何创建和使用基于HTTP Commons Async的管道。