Axis2
  1. Axis2
  2. AXIS2-4318

Upgrade CommonsHTTPTransportSender to use httpclient 4.0

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.4.1
    • Fix Version/s: 1.7.0
    • Component/s: None
    • Labels:
      None

      Description

      3 areas currently using commons-httpclient 3.1:

      1. The code that interfaces between Axis2 and the underlying
      transport, e.g. the Stub class. This code only refers to
      org.apache.commons.httpclient.Header and could easily be made
      independent of commons-httpclient. This is what the patch in
      AXIS2-3933 does.

      2. MultipartFormDataFormatter uses code from commons-httpclient to
      build multipart/form-data requests. Maybe this code should be
      rewritten to use HttpMime [1] and/or mime4j.

      3. The code in the HTTP transport. Note that in Axis2 1.5 this code is
      no longer part of the kernel and lives in a separate module. The core
      question here is whether we should upgrade that code from
      commons-httpclient 3.1 to HttpClient 4.0 or if it is better to keep
      two separate transport sender implementations (at least temporarily).
      It would be interesting to get Oleg's opinion on this.

      For the legal issue around NTLM, I think the best solution is to allow
      the user to register additional AuthSchemeFactory classes in the
      transport configuration in axis2.xml. People who need NTLM can than
      use the code from [2].

      [1] http://hc.apache.org/httpcomponents-client/httpmime/index.html
      [2] http://hc.apache.org/httpcomponents-client/ntlm.html

      I am willing to provide a patch to upgrade to httpclient 4.0. I have completed some work locally and I believe most of the existing functionality has been replicated successfully in httpclient 4.0 but still more areas need to be settled before the local work becomes a candidate for commit into the trunk.

      Unanswered questions/proposals:

      1) I assume upgrading to httpclient 4.0 rather than providing a separate transport is the best long term solution.

      2) Drop support for HTTPConstants.CUSTOM_PROTOCOL_HANDLER option

      Reason DefaultHttpClient already supports http and https schemes by default do we really want to allow a user to use a different scheme/socketfactory combination? This doesn't seem to be a commonly used feature.

      If we still need to support this option then an instance of Scheme would need to be passed in by the user and registered in the SchemeRegistry in turn used to build the HttpClient. We can no longer use a DefaultHttpClient if we do this, we would have to extend it most likely.

      3) drop authenticator preemptive authentication support

      Preemptive authentication is considered unsecure and is strongly discouraged. Moreover the code found in examples: http://hc.apache.org/httpcomponents-client/examples.html is no longer officially supported. Which means that we should drop preemptive authentication support from the trunk; alternatively we can allow a number of pluggable mechanisms to allow users to enable preemptive auth. The user would have to provide HttpRequestInterceptor and HttpResponseInterceptor implementations as well as a means to properties to configure a BasicHttpContext for use with the HttpClient. As a workaround/alternative the user could fully initialize it's own AbstractHttpClient instance and pass it through the existing CACHED_HTTP_CLIENT option.

      3) Drop support for HTTPConstants.AUTO_RELEASE_CONNECTION

      httpclient 4.0 already releases http connections (to the connection pool) after every http method execution. Therefore this property becomes obsolete.

      4) Axis2 and java compiler source compliance setting? I see that some axis2 modules still compile with 1.4 source compliance. Should this be supported? On mailing lists I saw that Axis2 already started moving to java 5. Should Axis2 1.4 kernel module still use java compliance 1.4, should we change source compliance for the kernel to 1.5?

      1. axis2-1.6.1-patch-for-httpclient4.1-WORK-IN-PROGESS.diff
        108 kB
        Ian Beaumont
      2. AXIS2-4318_01.patch
        17 kB
        Kishanthan Thangarajah
      3. AXIS2-4318_02.patch
        8 kB
        Kishanthan Thangarajah
      4. AXIS2-4318_03.patch
        74 kB
        Kishanthan Thangarajah
      5. AXIS2-4318_04.patch
        21 kB
        Kishanthan Thangarajah
      6. AXIS2-4318_05.patch
        5 kB
        Kishanthan Thangarajah
      7. AXIS2-4318_06.patch
        10 kB
        Kishanthan Thangarajah
      8. workinprogress.patch
        99 kB
        Guillaume Jeudy

        Issue Links

          Activity

          Guillaume Jeudy created issue -
          Guillaume Jeudy made changes -
          Field Original Value New Value
          Link This issue depends on AXIS2-3933 [ AXIS2-3933 ]
          Hide
          Marko Asplund added a comment -

          Has there been any progress on this issue?

          I'm currently trying to make a Java web application talk to Microsoft Sharepoint server web services using Axis2 and authentication has proven to be the trickiest part. HttpClient 3.1 only seems to support NTLM v1 which is not enabled by default on newer Windows servers and administrators don't usually allow using it.
          NTLM autentication works well with HttpClient 4.0 + JCIFS though.

          Show
          Marko Asplund added a comment - Has there been any progress on this issue? I'm currently trying to make a Java web application talk to Microsoft Sharepoint server web services using Axis2 and authentication has proven to be the trickiest part. HttpClient 3.1 only seems to support NTLM v1 which is not enabled by default on newer Windows servers and administrators don't usually allow using it. NTLM autentication works well with HttpClient 4.0 + JCIFS though.
          Hide
          Guillaume Jeudy added a comment -

          I do have a locally patched axis2 version that works with NTLMv2 authentication but it is not published here. I don't think the patch is ready for axis2 trunk because it has missing features (I couldnt find an easy to port for some of the features as outlined in the initial JIRA description), therefore it would be unacceptable for broad consumption if such features disappeared with the upgrade.

          What you can do is vote for this issue and hope that it gets attention from the Axis2 developers. I'm not an Axis2 developer and never committed anything to axis2 and therefore need guidance from the axis2 devs which haven't been very responsive to this JIRA issue so far.

          Show
          Guillaume Jeudy added a comment - I do have a locally patched axis2 version that works with NTLMv2 authentication but it is not published here. I don't think the patch is ready for axis2 trunk because it has missing features (I couldnt find an easy to port for some of the features as outlined in the initial JIRA description), therefore it would be unacceptable for broad consumption if such features disappeared with the upgrade. What you can do is vote for this issue and hope that it gets attention from the Axis2 developers. I'm not an Axis2 developer and never committed anything to axis2 and therefore need guidance from the axis2 devs which haven't been very responsive to this JIRA issue so far.
          Hide
          George Stanchev added a comment -

          Guillaume, can you attach your patch and indicate the svn revision # you have done it against so when/if an axis2 committer picks it up to have a starting point. I am also intrested in your patch regardless if it is commital-ready.

          Show
          George Stanchev added a comment - Guillaume, can you attach your patch and indicate the svn revision # you have done it against so when/if an axis2 committer picks it up to have a starting point. I am also intrested in your patch regardless if it is commital-ready.
          Hide
          Guillaume Jeudy added a comment -

          I added all the patch info. Let me know if that is any help to you guys.

          I had to use a BufferedHttpEntity in AbstractHTTPSender.processResponse() because otherwise the http connections would never be released when the transport is used with REUSE_HTTP_CLIENT mode.

          Note: this decision is controversial because you buffer the whole input stream in memory, that wouldnt work if you expect very large responses from your HTTP SOAP call...

          It seems like axis toplevel classes is using a PushbackInputStream which defeats the http client EofSensorInputStream that is supposed to detect the end of the stream and release the underlying http connection. An axis2 developer's advice would be welcome here. Ideally we want the EofSensorInputStream to do it's job and not have to buffer the whole response in memory...

          Regards,
          -Guillaume

          Show
          Guillaume Jeudy added a comment - I added all the patch info. Let me know if that is any help to you guys. I had to use a BufferedHttpEntity in AbstractHTTPSender.processResponse() because otherwise the http connections would never be released when the transport is used with REUSE_HTTP_CLIENT mode. Note: this decision is controversial because you buffer the whole input stream in memory, that wouldnt work if you expect very large responses from your HTTP SOAP call... It seems like axis toplevel classes is using a PushbackInputStream which defeats the http client EofSensorInputStream that is supposed to detect the end of the stream and release the underlying http connection. An axis2 developer's advice would be welcome here. Ideally we want the EofSensorInputStream to do it's job and not have to buffer the whole response in memory... Regards, -Guillaume
          Guillaume Jeudy made changes -
          Attachment workinprogress.patch [ 12408741 ]
          Hide
          Guillaume Jeudy added a comment -

          forgot to say, I checked out axis2 with axis2_14 tag before developing the patch.

          Show
          Guillaume Jeudy added a comment - forgot to say, I checked out axis2 with axis2_14 tag before developing the patch.
          Hide
          Andreas Veithen added a comment -

          Applying the changes to the trunk and maintaining them afterwards will be quite challenging. There are several reasons for this:

          • The baseline for the patch is 1.4 and there have been other fixes and changes in the code.
          • Since 1.4, the code of the HTTP transport has been moved twice (first to WS-Commons Transport and than back to Axis2 into a separate Maven module). What makes it worse is that the first move was not done correctly (local copy + svn add instead of svn copy/move), so that it's difficult to get the version history back to 1.4.
          • The conclusion of the discussion on the mailing list [1] was to keep implementations for both commons-httpclient 3.1 and for httpclient 4.0, which I believe is a good thing. On the other hand this means that instead of just applying the patch and throwing out commons-httpclient, we need to create some sort of fork. From Guillaume's patch it is clear that these two implementations will have a lot of duplicate logic and code. This will cause maintenance issues (fixes or enhancements applied to one implementation, but not the other, etc.).

          For these reasons I would prefer a different approach, which is to first refactor the current HTTP implementation to isolate all the commons-httpclient 3.1 specific code from the purely Axis2 related code that would be common to the two implementations. Using Guillaume's experience we would then build a httpclient 4.0 implementation on top of it.

          This is only realistic if we can build a group of people who support that effort by analyzing the existing code, contributing new code and/or actively testing the code. Who of you is ready to support this effort? Please note that the baseline for this development would be Axis2 1.5 (which will be released next week).

          [1] http://markmail.org/thread/m2tsumqxvfiel2bg

          Show
          Andreas Veithen added a comment - Applying the changes to the trunk and maintaining them afterwards will be quite challenging. There are several reasons for this: The baseline for the patch is 1.4 and there have been other fixes and changes in the code. Since 1.4, the code of the HTTP transport has been moved twice (first to WS-Commons Transport and than back to Axis2 into a separate Maven module). What makes it worse is that the first move was not done correctly (local copy + svn add instead of svn copy/move), so that it's difficult to get the version history back to 1.4. The conclusion of the discussion on the mailing list [1] was to keep implementations for both commons-httpclient 3.1 and for httpclient 4.0, which I believe is a good thing. On the other hand this means that instead of just applying the patch and throwing out commons-httpclient, we need to create some sort of fork. From Guillaume's patch it is clear that these two implementations will have a lot of duplicate logic and code. This will cause maintenance issues (fixes or enhancements applied to one implementation, but not the other, etc.). For these reasons I would prefer a different approach, which is to first refactor the current HTTP implementation to isolate all the commons-httpclient 3.1 specific code from the purely Axis2 related code that would be common to the two implementations. Using Guillaume's experience we would then build a httpclient 4.0 implementation on top of it. This is only realistic if we can build a group of people who support that effort by analyzing the existing code, contributing new code and/or actively testing the code. Who of you is ready to support this effort? Please note that the baseline for this development would be Axis2 1.5 (which will be released next week). [1] http://markmail.org/thread/m2tsumqxvfiel2bg
          Hide
          Hendry Betts III added a comment - - edited

          as it stands now, I am going to have to completely re-write my axis based service classes to communicate with SharePoint. I wish this was already done. Andreas, I will help however I can.

          Show
          Hendry Betts III added a comment - - edited as it stands now, I am going to have to completely re-write my axis based service classes to communicate with SharePoint. I wish this was already done. Andreas, I will help however I can.
          Hide
          Marko Asplund added a comment -

          AFAIK, SPNEGO support has been added to Commons HttpClient 4.1 branch (see HTTPCLIENT-523).
          This should make many people that need to integrate with SharePoint very happy.

          Show
          Marko Asplund added a comment - AFAIK, SPNEGO support has been added to Commons HttpClient 4.1 branch (see HTTPCLIENT-523 ). This should make many people that need to integrate with SharePoint very happy.
          Hide
          Hendry Betts III added a comment -

          Marko, this is all well and good. In fact, for the solution I am having to engineer I am using HTTPClient 4.1. But I would rather not have to replicate functionality in Axis2 simply because the client module isn't "up-to-date"

          Show
          Hendry Betts III added a comment - Marko, this is all well and good. In fact, for the solution I am having to engineer I am using HTTPClient 4.1. But I would rather not have to replicate functionality in Axis2 simply because the client module isn't "up-to-date"
          Hide
          Anton Khitrenovich added a comment -

          I guess nowadays it should be HttpClient 4.1...

          Show
          Anton Khitrenovich added a comment - I guess nowadays it should be HttpClient 4.1...
          Hide
          Lars Van Casteren added a comment -

          Will httpclient4.1 ever be incorporated?

          Show
          Lars Van Casteren added a comment - Will httpclient4.1 ever be incorporated?
          Hide
          Nicolas Bihan added a comment - - edited

          As it stands I'm on the way to stop using axis2.
          Too bad, good library. HttpClient 4.1 would have been sweet but it didn't even make the cut in 1.6.

          Quite strange for a major issue.

          Show
          Nicolas Bihan added a comment - - edited As it stands I'm on the way to stop using axis2. Too bad, good library. HttpClient 4.1 would have been sweet but it didn't even make the cut in 1.6. Quite strange for a major issue.
          Hide
          Ian Beaumont added a comment - - edited

          Attached is a patch axis2-1.6.1-patch-for-httpclient4.1-WORK-IN-PROGESS.diff based on the previous work in progress to allow axis2 1.6.1 to use httpClient 4.1 libraries. It needs reviewing and probably may not be complete with relation to proxy servers, but hopefully someone can take it on and offically get the new httpClient integrated into Axis2.
          Happy to help where I can.

          Show
          Ian Beaumont added a comment - - edited Attached is a patch axis2-1.6.1-patch-for-httpclient4.1-WORK-IN-PROGESS.diff based on the previous work in progress to allow axis2 1.6.1 to use httpClient 4.1 libraries. It needs reviewing and probably may not be complete with relation to proxy servers, but hopefully someone can take it on and offically get the new httpClient integrated into Axis2. Happy to help where I can.
          Ian Beaumont made changes -
          Hide
          Ian Beaumont added a comment -

          The description.task for this issue should be changed from httpclient 4.0 to httpclient 4.1

          Show
          Ian Beaumont added a comment - The description.task for this issue should be changed from httpclient 4.0 to httpclient 4.1
          Andreas Veithen made changes -
          Comment [ Thank you for your mail!

          I am out of office until Wednesday, 12th of October 2011 and am currently unable to read and/or respond to your mail.
          In my absence, please feel free to contact Mr. Gerfried Aigner (mailto:g.aigner@sage.at).

          Thank you for your understanding.

          Best regards
          Markus Horehled
          --------------------------------------------------
          Vielen Dank für Ihre Nachricht!

          Leider kann ich Ihre Nachricht zurzeit nicht bearbeiten. Ich werde sie erst nach meiner Rückkehr lesen und gegebenenfalls beantworten können. Ich bin ab Mittwoch, 12. Oktober 2011 wieder im Haus.
          In dringenden Fällen wenden Sie sich bitte während meiner Abwesenheit an Herrn Gerfried Aigner (mailto:g.aigner@sage.at).

          Vielen Dank!

          Mit freundlichen Grüßen
          Markus Horehled

          ]
          Hide
          Anton Khitrenovich added a comment -

          Note that 2-way authentication with HttpClient 4.1.x cannot be initialized with system properties when using Sun JRE [1].
          This is caused by the following:

          • HttpClient relies on JRE to initialize SSL context
          • Sun JRE intentionally ignores SSL-related system properties by default [2]
            It means that Axis2 has either to take about that internally or to wait for HttpClient 4.2, were this behavior will be (partially) improved [3].

          [1] https://issues.apache.org/jira/browse/HTTPCLIENT-1091
          [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7052928
          [3] https://issues.apache.org/jira/browse/HTTPCLIENT-1128

          Show
          Anton Khitrenovich added a comment - Note that 2-way authentication with HttpClient 4.1.x cannot be initialized with system properties when using Sun JRE [1] . This is caused by the following: HttpClient relies on JRE to initialize SSL context Sun JRE intentionally ignores SSL-related system properties by default [2] It means that Axis2 has either to take about that internally or to wait for HttpClient 4.2, were this behavior will be (partially) improved [3] . [1] https://issues.apache.org/jira/browse/HTTPCLIENT-1091 [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7052928 [3] https://issues.apache.org/jira/browse/HTTPCLIENT-1128
          Sagara Gunathunga made changes -
          Assignee Sagara Gunathunga [ sagara ]
          Sagara Gunathunga made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Hide
          Sagara Gunathunga added a comment -

          Since I already resolved the AXIS2-3933 ( that has been a barrier for this) now it is possible to work on this. As it discussed in earlier comments best approach is to support both commons-httpclient 3.x and for httpclient 4.x. I already started to move Axis2 specific code into kind of a abstract framework so that we can write ommons-httpclient 3.x/ httpclient 4.x specific codes top of that.

          It would be great if the community can provide test cases and review this works.

          Show
          Sagara Gunathunga added a comment - Since I already resolved the AXIS2-3933 ( that has been a barrier for this) now it is possible to work on this. As it discussed in earlier comments best approach is to support both commons-httpclient 3.x and for httpclient 4.x. I already started to move Axis2 specific code into kind of a abstract framework so that we can write ommons-httpclient 3.x/ httpclient 4.x specific codes top of that. It would be great if the community can provide test cases and review this works.
          Hide
          Hudson added a comment -

          Integrated in Axis2 #1224 (See https://builds.apache.org/job/Axis2/1224/)
          [maven-release-plugin] prepare release AXIS2-4318
          [maven-release-plugin] prepare branch AXIS2-4318

          sagara :
          Files :

          • /axis/axis2/java/core/trunk/modules/adb-codegen/pom.xml
          • /axis/axis2/java/core/trunk/modules/adb/pom.xml
          • /axis/axis2/java/core/trunk/modules/addressing/pom.xml
          • /axis/axis2/java/core/trunk/modules/clustering/pom.xml
          • /axis/axis2/java/core/trunk/modules/codegen/pom.xml
          • /axis/axis2/java/core/trunk/modules/corba/pom.xml
          • /axis/axis2/java/core/trunk/modules/fastinfoset/pom.xml
          • /axis/axis2/java/core/trunk/modules/integration/pom.xml
          • /axis/axis2/java/core/trunk/modules/java2wsdl/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxbri/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxws-mar/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxws/pom.xml
          • /axis/axis2/java/core/trunk/modules/jibx/pom.xml
          • /axis/axis2/java/core/trunk/modules/json/pom.xml
          • /axis/axis2/java/core/trunk/modules/kernel/pom.xml
          • /axis/axis2/java/core/trunk/modules/metadata/pom.xml
          • /axis/axis2/java/core/trunk/modules/mex/pom.xml
          • /axis/axis2/java/core/trunk/modules/mtompolicy-mar/pom.xml
          • /axis/axis2/java/core/trunk/modules/mtompolicy/pom.xml
          • /axis/axis2/java/core/trunk/modules/osgi/pom.xml
          • /axis/axis2/java/core/trunk/modules/parent/pom.xml
          • /axis/axis2/java/core/trunk/modules/ping/pom.xml
          • /axis/axis2/java/core/trunk/modules/resource-bundle/pom.xml
          • /axis/axis2/java/core/trunk/modules/saaj/pom.xml
          • /axis/axis2/java/core/trunk/modules/samples/version/pom.xml
          • /axis/axis2/java/core/trunk/modules/scripting/pom.xml
          • /axis/axis2/java/core/trunk/modules/soapmonitor/module/pom.xml
          • /axis/axis2/java/core/trunk/modules/soapmonitor/servlet/pom.xml
          • /axis/axis2/java/core/trunk/modules/spring/pom.xml
          • /axis/axis2/java/core/trunk/modules/testutils/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-aar-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-ant-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-service-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-idea-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-mar-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-repo-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/http/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/local/pom.xml
          • /axis/axis2/java/core/trunk/modules/webapp/pom.xml
          • /axis/axis2/java/core/trunk/modules/xmlbeans/pom.xml
          • /axis/axis2/java/core/trunk/pom.xml

          sagara :
          Files :

          • /axis/axis2/java/core/trunk/modules/adb-codegen/pom.xml
          • /axis/axis2/java/core/trunk/modules/adb/pom.xml
          • /axis/axis2/java/core/trunk/modules/addressing/pom.xml
          • /axis/axis2/java/core/trunk/modules/clustering/pom.xml
          • /axis/axis2/java/core/trunk/modules/codegen/pom.xml
          • /axis/axis2/java/core/trunk/modules/corba/pom.xml
          • /axis/axis2/java/core/trunk/modules/fastinfoset/pom.xml
          • /axis/axis2/java/core/trunk/modules/integration/pom.xml
          • /axis/axis2/java/core/trunk/modules/java2wsdl/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxbri/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxws-mar/pom.xml
          • /axis/axis2/java/core/trunk/modules/jaxws/pom.xml
          • /axis/axis2/java/core/trunk/modules/jibx/pom.xml
          • /axis/axis2/java/core/trunk/modules/json/pom.xml
          • /axis/axis2/java/core/trunk/modules/kernel/pom.xml
          • /axis/axis2/java/core/trunk/modules/metadata/pom.xml
          • /axis/axis2/java/core/trunk/modules/mex/pom.xml
          • /axis/axis2/java/core/trunk/modules/mtompolicy-mar/pom.xml
          • /axis/axis2/java/core/trunk/modules/mtompolicy/pom.xml
          • /axis/axis2/java/core/trunk/modules/osgi/pom.xml
          • /axis/axis2/java/core/trunk/modules/parent/pom.xml
          • /axis/axis2/java/core/trunk/modules/ping/pom.xml
          • /axis/axis2/java/core/trunk/modules/resource-bundle/pom.xml
          • /axis/axis2/java/core/trunk/modules/saaj/pom.xml
          • /axis/axis2/java/core/trunk/modules/samples/version/pom.xml
          • /axis/axis2/java/core/trunk/modules/scripting/pom.xml
          • /axis/axis2/java/core/trunk/modules/soapmonitor/module/pom.xml
          • /axis/axis2/java/core/trunk/modules/soapmonitor/servlet/pom.xml
          • /axis/axis2/java/core/trunk/modules/spring/pom.xml
          • /axis/axis2/java/core/trunk/modules/testutils/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/archetype/quickstart-webapp/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/archetype/quickstart/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-aar-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-ant-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-service-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-idea-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-mar-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-repo-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/http/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/local/pom.xml
          • /axis/axis2/java/core/trunk/modules/webapp/pom.xml
          • /axis/axis2/java/core/trunk/modules/xmlbeans/pom.xml
          • /axis/axis2/java/core/trunk/pom.xml
          Show
          Hudson added a comment - Integrated in Axis2 #1224 (See https://builds.apache.org/job/Axis2/1224/ ) [maven-release-plugin] prepare release AXIS2-4318 [maven-release-plugin] prepare branch AXIS2-4318 sagara : Files : /axis/axis2/java/core/trunk/modules/adb-codegen/pom.xml /axis/axis2/java/core/trunk/modules/adb/pom.xml /axis/axis2/java/core/trunk/modules/addressing/pom.xml /axis/axis2/java/core/trunk/modules/clustering/pom.xml /axis/axis2/java/core/trunk/modules/codegen/pom.xml /axis/axis2/java/core/trunk/modules/corba/pom.xml /axis/axis2/java/core/trunk/modules/fastinfoset/pom.xml /axis/axis2/java/core/trunk/modules/integration/pom.xml /axis/axis2/java/core/trunk/modules/java2wsdl/pom.xml /axis/axis2/java/core/trunk/modules/jaxbri/pom.xml /axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml /axis/axis2/java/core/trunk/modules/jaxws-mar/pom.xml /axis/axis2/java/core/trunk/modules/jaxws/pom.xml /axis/axis2/java/core/trunk/modules/jibx/pom.xml /axis/axis2/java/core/trunk/modules/json/pom.xml /axis/axis2/java/core/trunk/modules/kernel/pom.xml /axis/axis2/java/core/trunk/modules/metadata/pom.xml /axis/axis2/java/core/trunk/modules/mex/pom.xml /axis/axis2/java/core/trunk/modules/mtompolicy-mar/pom.xml /axis/axis2/java/core/trunk/modules/mtompolicy/pom.xml /axis/axis2/java/core/trunk/modules/osgi/pom.xml /axis/axis2/java/core/trunk/modules/parent/pom.xml /axis/axis2/java/core/trunk/modules/ping/pom.xml /axis/axis2/java/core/trunk/modules/resource-bundle/pom.xml /axis/axis2/java/core/trunk/modules/saaj/pom.xml /axis/axis2/java/core/trunk/modules/samples/version/pom.xml /axis/axis2/java/core/trunk/modules/scripting/pom.xml /axis/axis2/java/core/trunk/modules/soapmonitor/module/pom.xml /axis/axis2/java/core/trunk/modules/soapmonitor/servlet/pom.xml /axis/axis2/java/core/trunk/modules/spring/pom.xml /axis/axis2/java/core/trunk/modules/testutils/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-aar-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-ant-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-service-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-idea-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-mar-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-repo-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/transport/http/pom.xml /axis/axis2/java/core/trunk/modules/transport/local/pom.xml /axis/axis2/java/core/trunk/modules/webapp/pom.xml /axis/axis2/java/core/trunk/modules/xmlbeans/pom.xml /axis/axis2/java/core/trunk/pom.xml sagara : Files : /axis/axis2/java/core/trunk/modules/adb-codegen/pom.xml /axis/axis2/java/core/trunk/modules/adb/pom.xml /axis/axis2/java/core/trunk/modules/addressing/pom.xml /axis/axis2/java/core/trunk/modules/clustering/pom.xml /axis/axis2/java/core/trunk/modules/codegen/pom.xml /axis/axis2/java/core/trunk/modules/corba/pom.xml /axis/axis2/java/core/trunk/modules/fastinfoset/pom.xml /axis/axis2/java/core/trunk/modules/integration/pom.xml /axis/axis2/java/core/trunk/modules/java2wsdl/pom.xml /axis/axis2/java/core/trunk/modules/jaxbri/pom.xml /axis/axis2/java/core/trunk/modules/jaxws-integration/pom.xml /axis/axis2/java/core/trunk/modules/jaxws-mar/pom.xml /axis/axis2/java/core/trunk/modules/jaxws/pom.xml /axis/axis2/java/core/trunk/modules/jibx/pom.xml /axis/axis2/java/core/trunk/modules/json/pom.xml /axis/axis2/java/core/trunk/modules/kernel/pom.xml /axis/axis2/java/core/trunk/modules/metadata/pom.xml /axis/axis2/java/core/trunk/modules/mex/pom.xml /axis/axis2/java/core/trunk/modules/mtompolicy-mar/pom.xml /axis/axis2/java/core/trunk/modules/mtompolicy/pom.xml /axis/axis2/java/core/trunk/modules/osgi/pom.xml /axis/axis2/java/core/trunk/modules/parent/pom.xml /axis/axis2/java/core/trunk/modules/ping/pom.xml /axis/axis2/java/core/trunk/modules/resource-bundle/pom.xml /axis/axis2/java/core/trunk/modules/saaj/pom.xml /axis/axis2/java/core/trunk/modules/samples/version/pom.xml /axis/axis2/java/core/trunk/modules/scripting/pom.xml /axis/axis2/java/core/trunk/modules/soapmonitor/module/pom.xml /axis/axis2/java/core/trunk/modules/soapmonitor/servlet/pom.xml /axis/axis2/java/core/trunk/modules/spring/pom.xml /axis/axis2/java/core/trunk/modules/testutils/pom.xml /axis/axis2/java/core/trunk/modules/tool/archetype/quickstart-webapp/pom.xml /axis/axis2/java/core/trunk/modules/tool/archetype/quickstart/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-aar-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-ant-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-service-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-idea-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-mar-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-repo-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/tool/simple-server-maven-plugin/pom.xml /axis/axis2/java/core/trunk/modules/transport/http/pom.xml /axis/axis2/java/core/trunk/modules/transport/local/pom.xml /axis/axis2/java/core/trunk/modules/webapp/pom.xml /axis/axis2/java/core/trunk/modules/xmlbeans/pom.xml /axis/axis2/java/core/trunk/pom.xml
          Hide
          Sagara Gunathunga added a comment -

          I have made some progress on this issue, at the moment refactoring of existing code is more or less complete.

          org.apache.axis2.transport.http package contains Axis2 related codes which are common for both HTTPClient 3.x and 4.x. I had to make some classes abstract to achieve this.

          There are two new packages introduced as org.apache.axis2.transport.http.impl.httpclient3 and org.apache.axis2.transport.http.impl.httpclient4 to hold HTTPClient version specific code. currently I have moved existing HTTPClient 3.x specific codes into org.apache.axis2.transport.http.impl.httpclient3 package and now it's possible to run all the test cases.

          The next step is complete org.apache.axis2.transport.http.impl.httpclient4 package and introduce two new TransportSenders as follows.

          HTTPClient3TransportSender ( while keep CommonsHTTPTransportSender for backward compatibility)
          HTTPClient4TransportSender

          Before I proceed further I would like to see any comments/ suggestions about above refactoring. Above modifications available on http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/ branch.

          Show
          Sagara Gunathunga added a comment - I have made some progress on this issue, at the moment refactoring of existing code is more or less complete. org.apache.axis2.transport.http package contains Axis2 related codes which are common for both HTTPClient 3.x and 4.x. I had to make some classes abstract to achieve this. There are two new packages introduced as org.apache.axis2.transport.http.impl.httpclient3 and org.apache.axis2.transport.http.impl.httpclient4 to hold HTTPClient version specific code. currently I have moved existing HTTPClient 3.x specific codes into org.apache.axis2.transport.http.impl.httpclient3 package and now it's possible to run all the test cases. The next step is complete org.apache.axis2.transport.http.impl.httpclient4 package and introduce two new TransportSenders as follows. HTTPClient3TransportSender ( while keep CommonsHTTPTransportSender for backward compatibility) HTTPClient4TransportSender Before I proceed further I would like to see any comments/ suggestions about above refactoring. Above modifications available on http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/ branch.
          Hide
          Sagara Gunathunga added a comment -

          Refactored few test cases in r1295542.

          Show
          Sagara Gunathunga added a comment - Refactored few test cases in r1295542.
          Hide
          Kishanthan Thangarajah added a comment -

          Hi,
          I have been working on this and based on the progress made so far on this implementation, I'm adding an initial patch for httpclient4 support in transport module. By going through the httpclient3 impl in this [1] branch, i have included some classes for httpclient4 impl in this initial patch. Please review this and provide a feedback on this, so that i can continue working on implementing other needed classes. Also as with httpclient3 tests cases, we can add similar tests to this once each unit is implemented.

          Thanks,
          Kishanthan.
          [1] http://svn.apache.org/repos/asf/axis/axis2/java/core/branches/AXIS2-4318/

          Show
          Kishanthan Thangarajah added a comment - Hi, I have been working on this and based on the progress made so far on this implementation, I'm adding an initial patch for httpclient4 support in transport module. By going through the httpclient3 impl in this [1] branch, i have included some classes for httpclient4 impl in this initial patch. Please review this and provide a feedback on this, so that i can continue working on implementing other needed classes. Also as with httpclient3 tests cases, we can add similar tests to this once each unit is implemented. Thanks, Kishanthan. [1] http://svn.apache.org/repos/asf/axis/axis2/java/core/branches/AXIS2-4318/
          Hide
          Kishanthan Thangarajah added a comment - - edited

          Initial patch for httpclient4 impl.

          Show
          Kishanthan Thangarajah added a comment - - edited Initial patch for httpclient4 impl.
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_01.patch [ 12522077 ]
          Hide
          Sagara Gunathunga added a comment -

          Can you elaborate more on implementations of following two methods on above patch.

          public InputStream getRequestEntityContent()
          public InputStream getContent()

          I just curious is there any other better way to implement above methods may be you can contact HC lists.

          Show
          Sagara Gunathunga added a comment - Can you elaborate more on implementations of following two methods on above patch. public InputStream getRequestEntityContent() public InputStream getContent() I just curious is there any other better way to implement above methods may be you can contact HC lists.
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_02.patch [ 12523678 ]
          Hide
          Kishanthan Thangarajah added a comment -

          Hi Sagara,
          I figured out this way to implement getContent method, by referring to some of the available implementation of this method in httpcore, such as in ByteArrayEntity class. In this class they have used the same way as what i have done in the patch. But i understand the fact that, how this will affect the performance.? So i have asked this in httpclient users list mentioning our requirement. Also i'm attaching the second patch. This include the implementation of HTTPClient4TransportSender class and a test case for this. Also to work with httpcore 4.0, which is already available in axis2, we have to use httpclient version 4.0 to be compatible with it. I tested with the later verison of HC4, but it was not compatible with httpcore 4.0. I'm now focusing on other two classes (HTTPSenderImpl and HTTPProxyConfigurator). I was able to implement these two classes, but i didn't include them in the patch. Because HTTPSenderImpl is the main class, it needs more testing. Once i'm done with thorough testing, i will provide a patch.

          Thanks,
          Kishanthan.

          Show
          Kishanthan Thangarajah added a comment - Hi Sagara, I figured out this way to implement getContent method, by referring to some of the available implementation of this method in httpcore, such as in ByteArrayEntity class. In this class they have used the same way as what i have done in the patch. But i understand the fact that, how this will affect the performance.? So i have asked this in httpclient users list mentioning our requirement. Also i'm attaching the second patch. This include the implementation of HTTPClient4TransportSender class and a test case for this. Also to work with httpcore 4.0, which is already available in axis2, we have to use httpclient version 4.0 to be compatible with it. I tested with the later verison of HC4, but it was not compatible with httpcore 4.0. I'm now focusing on other two classes (HTTPSenderImpl and HTTPProxyConfigurator). I was able to implement these two classes, but i didn't include them in the patch. Because HTTPSenderImpl is the main class, it needs more testing. Once i'm done with thorough testing, i will provide a patch. Thanks, Kishanthan.
          Hide
          Ian Beaumont added a comment -

          Should the effort to get this to work be against HC4.1 rather than HC4.0? As you say, the two aren't compatible, and it seems strange to upgrade code to something that is already out of date.
          The reason I was using this (and wanted to upgrade to a later HC version) was for the NTLM authentication changes. HC4.0 has defects in it for this, and I'd need a HC4.1 compatible version.

          Show
          Ian Beaumont added a comment - Should the effort to get this to work be against HC4.1 rather than HC4.0? As you say, the two aren't compatible, and it seems strange to upgrade code to something that is already out of date. The reason I was using this (and wanted to upgrade to a later HC version) was for the NTLM authentication changes. HC4.0 has defects in it for this, and I'd need a HC4.1 compatible version.
          Hide
          Sagara Gunathunga added a comment - - edited

          @Kishanthan

          I have committed your latest patch. I refereed your thread [1] and it's look like you are making this issue into right direction. Within Axis2 we use HTTPCore 4.0 in number of places so IMO at this point we should use latest HTTPClient version which compatible with HTTPCore 4.0. We can think about upgrading both dependencies into their latest versions in a later stage.

          Another point is I developed HTTP test cases only HTTPClient 3.X in mind if you feel that it requires additional test for 4.x implantation feel free add them.

          [1] - http://old.nabble.com/Support-for-HttpClient4-in-Axis2---Implementing-HttpEntity-td33728117.html

          Show
          Sagara Gunathunga added a comment - - edited @Kishanthan I have committed your latest patch. I refereed your thread [1] and it's look like you are making this issue into right direction. Within Axis2 we use HTTPCore 4.0 in number of places so IMO at this point we should use latest HTTPClient version which compatible with HTTPCore 4.0. We can think about upgrading both dependencies into their latest versions in a later stage. Another point is I developed HTTP test cases only HTTPClient 3.X in mind if you feel that it requires additional test for 4.x implantation feel free add them. [1] - http://old.nabble.com/Support-for-HttpClient4-in-Axis2---Implementing-HttpEntity-td33728117.html
          Hide
          Kishanthan Thangarajah added a comment -

          I'm adding the next patch. This includes the HTTPSenderImpl and HTTPProxyConfigurator classes. I have included the inputs gained from the thread on HttpClient users list as-well. Further, i also have added a Test case for HttpClient4Sender, by following the same steps as 3. All tests cases on all methods passes successfully. Please go through the patch and provide any feedback on improvements. I referred mostly this [1] tutorial in implementing this.

          @Sagara,
          Yes, I'm working now on adding some more tests.

          Thanks,
          Kishanthan.
          [1] http://hc.apache.org/httpcomponents-client-ga/tutorial/html/

          Show
          Kishanthan Thangarajah added a comment - I'm adding the next patch. This includes the HTTPSenderImpl and HTTPProxyConfigurator classes. I have included the inputs gained from the thread on HttpClient users list as-well. Further, i also have added a Test case for HttpClient4Sender, by following the same steps as 3. All tests cases on all methods passes successfully. Please go through the patch and provide any feedback on improvements. I referred mostly this [1] tutorial in implementing this. @Sagara, Yes, I'm working now on adding some more tests. Thanks, Kishanthan. [1] http://hc.apache.org/httpcomponents-client-ga/tutorial/html/
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_03.patch [ 12524977 ]
          Hide
          Sagara Gunathunga added a comment -

          Latest patch applied in 1332141.

          Show
          Sagara Gunathunga added a comment - Latest patch applied in 1332141.
          Hide
          Kishanthan Thangarajah added a comment -

          I'm adding some info about the main class HTTPSenderImpl which handles all REST methods and requests.
          In httpclient3 impl for above same class, what we are doing is we handle the response in executing a method by referring the method it self. Because, after executing, the method itself will hold the information like, status, statusCode, responseHeaders etc.
          But in httpclient4, when executing a method, it returns a HttpResponse object. This object only, holds all the detail about the status of the method which was executed and also the response entites from executed method. So the possible way is to return the HttpResponse from executeMethod and use this response object in handling and processing the response, entities and status etc.
          Further, when setting timeout values we don't have set separately for the connection managers in hc4, instead we can set it to the client it self, which will be timeout values for connection manger as-well.
          I'm also adding a small fix for a typo in httpclient3 impl for ProxyConfigurator class.

          Kishanthan.

          Show
          Kishanthan Thangarajah added a comment - I'm adding some info about the main class HTTPSenderImpl which handles all REST methods and requests. In httpclient3 impl for above same class, what we are doing is we handle the response in executing a method by referring the method it self. Because, after executing, the method itself will hold the information like, status, statusCode, responseHeaders etc. But in httpclient4, when executing a method, it returns a HttpResponse object. This object only, holds all the detail about the status of the method which was executed and also the response entites from executed method. So the possible way is to return the HttpResponse from executeMethod and use this response object in handling and processing the response, entities and status etc. Further, when setting timeout values we don't have set separately for the connection managers in hc4, instead we can set it to the client it self, which will be timeout values for connection manger as-well. I'm also adding a small fix for a typo in httpclient3 impl for ProxyConfigurator class. Kishanthan.
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_04.patch [ 12525767 ]
          Sagara Gunathunga made changes -
          Assignee Sagara Gunathunga [ sagara ] Kishanthan Thangarajah [ kishanthan ]
          Hide
          Sagara Gunathunga added a comment -

          Kishanthan,

          Your last patch seems invalid, it seems your patch contains code formating changes can you resubmit your patch ?

          Show
          Sagara Gunathunga added a comment - Kishanthan, Your last patch seems invalid, it seems your patch contains code formating changes can you resubmit your patch ?
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_04.patch [ 12525767 ]
          Hide
          Kishanthan Thangarajah added a comment -

          Yes, the last patch contains a class rename and looks like it cannot be applied. I have replaced that with the correct one. I also noticed a small bug in the HttpProxyConfigurator class where the NTCredentials is set for the proxy (See line 95). It will never be used as the proxy credentials because the proxy credential will always be set to UsernamePasswordCredentials in the below line (98). I have corrected this as-well in the new patch.

          Kishanthan.

          Show
          Kishanthan Thangarajah added a comment - Yes, the last patch contains a class rename and looks like it cannot be applied. I have replaced that with the correct one. I also noticed a small bug in the HttpProxyConfigurator class where the NTCredentials is set for the proxy (See line 95). It will never be used as the proxy credentials because the proxy credential will always be set to UsernamePasswordCredentials in the below line (98). I have corrected this as-well in the new patch. Kishanthan.
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_04.patch [ 12525876 ]
          Hide
          Kishanthan Thangarajah added a comment -

          Hi All,
          I'm adding the next patch. Also, I did some testing for HC4's SenderImpl by running all the integration tests. Now all tests passes with using "httpclient4.HTTPSenderImpl" as the transport sender. I had to do some modification/improvement in order to fix some of the failing test cases. The changes were, we have to set some HttpParams for ConnectionManger and HttpClient, such as MAX_CONNECTIONS_PER_ROUTE, etc. Because with default, we can only have 2 connection for a connection manager. and this will fail with some of the test case where it sends multiple requests per route. This patch contains these changes. This also include the change where the CommonsHttpTranportSender will use the httpclient4.HTTPSenderImpl as the underlying HttpSender.

          Thanks,
          Kishanthan.

          Show
          Kishanthan Thangarajah added a comment - Hi All, I'm adding the next patch. Also, I did some testing for HC4's SenderImpl by running all the integration tests. Now all tests passes with using "httpclient4.HTTPSenderImpl" as the transport sender. I had to do some modification/improvement in order to fix some of the failing test cases. The changes were, we have to set some HttpParams for ConnectionManger and HttpClient, such as MAX_CONNECTIONS_PER_ROUTE, etc. Because with default, we can only have 2 connection for a connection manager. and this will fail with some of the test case where it sends multiple requests per route. This patch contains these changes. This also include the change where the CommonsHttpTranportSender will use the httpclient4.HTTPSenderImpl as the underlying HttpSender. Thanks, Kishanthan.
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_05.patch [ 12528273 ]
          Hide
          Sagara Gunathunga added a comment -

          Latest patch available on r1340985.

          Please note that CommonsHttpTranportSender continue to support HC3 to keep backward compatibility at least until next few releases hence I skipped that part of the patch.

          It seems these improvements are smart enough to merge with trunk I will test and try to merge these modifications.

          Show
          Sagara Gunathunga added a comment - Latest patch available on r1340985. Please note that CommonsHttpTranportSender continue to support HC3 to keep backward compatibility at least until next few releases hence I skipped that part of the patch. It seems these improvements are smart enough to merge with trunk I will test and try to merge these modifications.
          Hide
          Hudson added a comment -

          Integrated in Axis2 #1499 (See https://builds.apache.org/job/Axis2/1499/)
          Further modifications according to AXIS2-4318 changes. (Revision 1341387)
          Merged AXIS2-4318 changes to the trunk. (Revision 1341384)

          Result = FAILURE
          sagara :
          Files :

          • /axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/impl/AxisInvocationController.java
          • /axis/axis2/java/core/trunk/modules/osgi/pom.xml

          sagara :
          Files :

          • /axis/axis2/java/core/trunk
          • /axis/axis2/java/core/trunk/modules/parent/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/http/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPProxcyConfigurator.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPProxyConfigurator.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPTransportHeaders.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HttpTransportPropertiesImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/RESTRequestEntity2Impl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/RESTRequestEntityImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/AxisRequestEntityImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPClient4TransportSender.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPProxyConfigurator.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPTransportHeaders.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HttpTransportPropertiesImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RESTRequestEntity2Impl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RESTRequestEntityImpl.java
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/util/HTTPProxyConfigurationUtil.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/CommonsHTTPTransportSenderClientSideTest.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/CommonsHTTPTransportSenderTest.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient3SenderTest.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient3TransportSenderTest.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4SenderTest.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4TransportSenderTest.java
          • /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPSenderTest.java
          Show
          Hudson added a comment - Integrated in Axis2 #1499 (See https://builds.apache.org/job/Axis2/1499/ ) Further modifications according to AXIS2-4318 changes. (Revision 1341387) Merged AXIS2-4318 changes to the trunk. (Revision 1341384) Result = FAILURE sagara : Files : /axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/impl/AxisInvocationController.java /axis/axis2/java/core/trunk/modules/osgi/pom.xml sagara : Files : /axis/axis2/java/core/trunk /axis/axis2/java/core/trunk/modules/parent/pom.xml /axis/axis2/java/core/trunk/modules/transport/http/pom.xml /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3 /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPProxcyConfigurator.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPProxyConfigurator.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPTransportHeaders.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HttpTransportPropertiesImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/RESTRequestEntity2Impl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/RESTRequestEntityImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4 /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/AxisRequestEntityImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPClient4TransportSender.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPProxyConfigurator.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPTransportHeaders.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HttpTransportPropertiesImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RESTRequestEntity2Impl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RESTRequestEntityImpl.java /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/util/HTTPProxyConfigurationUtil.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/CommonsHTTPTransportSenderClientSideTest.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/CommonsHTTPTransportSenderTest.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient3SenderTest.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient3TransportSenderTest.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4SenderTest.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4TransportSenderTest.java /axis/axis2/java/core/trunk/modules/transport/http/test/org/apache/axis2/transport/http/HTTPSenderTest.java
          Hide
          Hudson added a comment -

          Integrated in Axis2 #1500 (See https://builds.apache.org/job/Axis2/1500/)
          AXIS2-5326 - Upgraded both HTTPCore and HTTPclient in to 4.1 versions to fix build issue cause by AXIS2-4318. Will look into possibility to move latest HTTPComponent later. (Revision 1341421)

          Result = SUCCESS
          sagara :
          Files :

          • /axis/axis2/java/core/trunk/modules/parent/pom.xml
          Show
          Hudson added a comment - Integrated in Axis2 #1500 (See https://builds.apache.org/job/Axis2/1500/ ) AXIS2-5326 - Upgraded both HTTPCore and HTTPclient in to 4.1 versions to fix build issue cause by AXIS2-4318 . Will look into possibility to move latest HTTPComponent later. (Revision 1341421) Result = SUCCESS sagara : Files : /axis/axis2/java/core/trunk/modules/parent/pom.xml
          Hide
          Sagara Gunathunga added a comment -

          Kishanthan,

          Now I have merged AXIS2-4318 with trunk but by default Axis2 use HC3. Once I enable HC4 I got test failures on following modules, next step would be fix those issues.

          • fastInfoset
          • saaj
          • jibx
          • Integration
          • json
          Show
          Sagara Gunathunga added a comment - Kishanthan, Now I have merged AXIS2-4318 with trunk but by default Axis2 use HC3. Once I enable HC4 I got test failures on following modules, next step would be fix those issues. fastInfoset saaj jibx Integration json
          Hide
          Kishanthan Thangarajah added a comment -

          Hi Sagara,
          It's good that these changes have been merged with trunk. I will go through the failing test cases in each module and try to fix it. Further, i see that both the httpcore and client versions have been upgraded to 4.1. So we will be able to use some of the features from this release, such as changes in NTLM authentication, etc. I will look into that as well.

          Kishanthan.

          Show
          Kishanthan Thangarajah added a comment - Hi Sagara, It's good that these changes have been merged with trunk. I will go through the failing test cases in each module and try to fix it. Further, i see that both the httpcore and client versions have been upgraded to 4.1. So we will be able to use some of the features from this release, such as changes in NTLM authentication, etc. I will look into that as well. Kishanthan.
          Hide
          Sagara Gunathunga added a comment -

          Since HTTPClient 4.2 released now [1] I tried to upgrade both HTTPCore and HTTPClient into 4.2 versions.

          • With default settings there is no build issues.
          • When enabling HC4 same set of modules which I mentioned in my last comment having test failures.

          Hence I think it safe to upgrade into 4.2 series.

          [1] - http://old.nabble.com/-ANNOUNCEMENT--HttpComponents-HttpClient-4.2-GA-release-td33891894.html

          Show
          Sagara Gunathunga added a comment - Since HTTPClient 4.2 released now [1] I tried to upgrade both HTTPCore and HTTPClient into 4.2 versions. With default settings there is no build issues. When enabling HC4 same set of modules which I mentioned in my last comment having test failures. Hence I think it safe to upgrade into 4.2 series. [1] - http://old.nabble.com/-ANNOUNCEMENT--HttpComponents-HttpClient-4.2-GA-release-td33891894.html
          Hide
          Hudson added a comment -

          Integrated in Axis2 #1502 (See https://builds.apache.org/job/Axis2/1502/)
          AXIS2-5326,AXIS2-4318 - Since HTTPClient 4.2 GA released now upgraded both HTTPClient and HTTPCore into 4.2 versions. (Revision 1341758)

          Result = SUCCESS
          sagara :
          Files :

          • /axis/axis2/java/core/trunk/modules/parent/pom.xml
          Show
          Hudson added a comment - Integrated in Axis2 #1502 (See https://builds.apache.org/job/Axis2/1502/ ) AXIS2-5326 , AXIS2-4318 - Since HTTPClient 4.2 GA released now upgraded both HTTPClient and HTTPCore into 4.2 versions. (Revision 1341758) Result = SUCCESS sagara : Files : /axis/axis2/java/core/trunk/modules/parent/pom.xml
          Hide
          Kishanthan Thangarajah added a comment -

          Adding the patch to fix the failing test cases which arose after merging. The issue was the underlying response stream was closed in some cases where the response stream is later used for processing. I'm also including some improvement to HttpSenderImpl with respect to upgrade of version 4.2. This includes, cleaning up usages of deprecated classes from 4.0 and using the correct classes, NTLM scheme registering with HttpClient, etc. This patch is created against trunk. I'm further looking into other areas for improvement.

          Thanks,
          Kishanthan.

          Show
          Kishanthan Thangarajah added a comment - Adding the patch to fix the failing test cases which arose after merging. The issue was the underlying response stream was closed in some cases where the response stream is later used for processing. I'm also including some improvement to HttpSenderImpl with respect to upgrade of version 4.2. This includes, cleaning up usages of deprecated classes from 4.0 and using the correct classes, NTLM scheme registering with HttpClient, etc. This patch is created against trunk. I'm further looking into other areas for improvement. Thanks, Kishanthan.
          Kishanthan Thangarajah made changes -
          Attachment AXIS2-4318_06.patch [ 12529751 ]
          Hide
          Sagara Gunathunga added a comment -

          Latest patch available on r1342853 and there is no test failures now.

          Show
          Sagara Gunathunga added a comment - Latest patch available on r1342853 and there is no test failures now.
          Hide
          Hudson added a comment -

          Integrated in Axis2 #1509 (See https://builds.apache.org/job/Axis2/1509/)
          AXIS2-4318 - Applied latest AXIS2-4318_06.patch, with this it is possible to run all test cases with HC4. (Revision 1342853)

          Result = SUCCESS
          sagara :
          Files :

          • /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
          • /axis/axis2/java/core/trunk/modules/osgi/pom.xml
          • /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
          Show
          Hudson added a comment - Integrated in Axis2 #1509 (See https://builds.apache.org/job/Axis2/1509/ ) AXIS2-4318 - Applied latest AXIS2-4318 _06.patch, with this it is possible to run all test cases with HC4. (Revision 1342853) Result = SUCCESS sagara : Files : /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java /axis/axis2/java/core/trunk/modules/osgi/pom.xml /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
          Hide
          Sagara Gunathunga added a comment -

          Still there is no client side option available to switch HTTPClient version. I did some testing by adding some uncommitted codes and HC4 implementation worked fine for my scenarios.

          Show
          Sagara Gunathunga added a comment - Still there is no client side option available to switch HTTPClient version. I did some testing by adding some uncommitted codes and HC4 implementation worked fine for my scenarios.
          Sagara Gunathunga made changes -
          Status In Progress [ 3 ] Resolved [ 5 ]
          Fix Version/s 1.7.0 [ 12316136 ]
          Resolution Fixed [ 1 ]
          Hide
          Ritesh Rathore added a comment - - edited

          I am not able to find any option to select http client version in client. (Stub generated using wsdl2java).

          Show
          Ritesh Rathore added a comment - - edited I am not able to find any option to select http client version in client. (Stub generated using wsdl2java).
          Anton Khitrenovich made changes -
          Attachment AXIS2-transport-http-requires-Commons-HttpClient-3.1.png [ 12568742 ]
          Anton Khitrenovich made changes -
          Link This issue is related to HTTPCORE-333 [ HTTPCORE-333 ]
          Anton Khitrenovich made changes -
          Comment [ I checked recent 1.7.0 snapshot, and I see that "axis2-transport-http" project still requires "common-httpclient-3.1.jar". Screenshot of dependency analysis attached. ]
          Anton Khitrenovich made changes -
          Attachment AXIS2-transport-http-requires-Commons-HttpClient-3.1.png [ 12568742 ]
          Hide
          Anton Khitrenovich added a comment -

          Do you plan to use HC 4.x transport as a default? If not, will you provide an option to switch to HC 4.x via ServiceClient/Options?

          Thanks!
          Anton,

          Show
          Anton Khitrenovich added a comment - Do you plan to use HC 4.x transport as a default? If not, will you provide an option to switch to HC 4.x via ServiceClient/Options? Thanks! Anton,
          Gavin made changes -
          Link This issue depends on AXIS2-3933 [ AXIS2-3933 ]
          Gavin made changes -
          Link This issue depends upon AXIS2-3933 [ AXIS2-3933 ]

            People

            • Assignee:
              Kishanthan Thangarajah
              Reporter:
              Guillaume Jeudy
            • Votes:
              16 Vote for this issue
              Watchers:
              22 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development