Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-2221

Attachment Streaming directly from HTTP Request

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • SAAJ
    • None
    • Java/J2EE

    Description

      The uploading of large attachments is a usual occurrence in production systems using Apache Axis (Java). Unfortunately, such an action has shown to degrade the performance when high volumes of attachments or large attachments are submitted. In order to realize optimal peformance for receiveing SOAP attachments, this document proposes a new implementation of handling attachments in Axis (Java). The changes proposed in this document PRESERVES backwards compatibility and allows the developer to decide how they would like to retreive the attachments.

      Currently, depending on the size of the attachment, Axis reads the entire HTTP stream and caches all attachments in memory or onto disk. The caching permits all of the attachments to be fully available to the business software by the time the request is passed to them for processing. The drawback to this approach is that it forces Axis to either allocate addition memory buffers or to engage in expensive file IO transactions in order to store the data from the HTTP stream. The extraction of the attachment data from the HTTP stream can be delegated to business tier which may be using Fiber channel SAN or databases to store the attachment data. This option will allow the business delegate to decide how to process the data and may do so without the necessity of caching the data to local disk.

      The proposal is to add a method to the Attachments interface allowing access to the underlying HTTP stream so that attachments can be streamed to the business objects instead of providing them with cached versions. This change will also require edits to the AttachmentImpl class and the addition of several new classes that will become the interfacing classes to the users of this new feature.

      Attachments

        1. Attachments.java.diff
          0.6 kB
          Brian Husted
        2. Attachments.java.diff
          0.6 kB
          Brian Husted
        3. AttachmentsImpl.java
          22 kB
          Brian Husted
        4. AttachmentsImpl.java.diff
          6 kB
          Brian Husted
        5. Axis_Java_SoapStreamsIterator_Design.doc
          978 kB
          Brian Husted
        6. DimeAttachmentStreams.java
          2 kB
          Brian Husted
        7. IncomingAttachmentStreams.java
          5 kB
          Brian Husted
        8. MultipartAttachmentStreams.java
          6 kB
          Brian Husted
        9. resource.properties.diff
          1 kB
          Brian Husted

        Activity

          People

            Unassigned Unassigned
            bhuste1 Brian Husted
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: