axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Ziemer <t.zie...@dkfz-heidelberg.de>
Subject Re: reading large attachments
Date Tue, 02 Aug 2005 10:02:58 GMT
Hi,

I cannot confirm this, but my use case is slightly different. I have a 
server, that always sends exactly one attachment. During testing we have 
setup a cluster of multiple machines to access this server 
simultaneously and request binary data (which was sent as an 
attachment). The attachmentCount was always 1, as expected.

Regards,
Tom

Axis User wrote:
> Hi,
> Further investigation has shown that the attachments are not in fact
> lost but appear in a different SOAP message! e.g. if 30 clients send
> an attachment one message will return getAttachmentCount() == 30 and
> the other 29 messages return getAttachmentCount() == 0.
> I have found this problem also to occur with reasonably small
> attachments (i.e. 4k)
> 
> This looks like a bug - can anyone comment?
> 
> M
> 
> On 8/1/05, Axis User <axisuser@gmail.com> wrote:
> 
>>Hi Tom,
>>Thanks for your reply. Further to my last mail I should say that
>>sending large attachments sequentially works fine. The problem for me
>>arises when I have multiple clients sending in parallel (i.e.
>>concurrent invocation of the service method) - sometimes
>>getAttachmentCount() returns 0 other times it works fine (with your
>>code fragment it becomes a NoSuchElement exception thrown
>>occasionally)
>>
>>Have you encountered or tested this situation before?
>>
>>Does anyone know if Axis supports writing multiple attachments at the same time?
>>
>>Thanks,
>>Michael
>>
>>On 8/1/05, Tom Ziemer <t.ziemer@dkfz-heidelberg.de> wrote:
>>
>>>Hi,
>>>
>>>try this:
>>>
>>>        DataHandler dh = null;
>>>         Message m = context.getCurrentMessage();
>>>         logger.info("[client]: Found attachments: "+m.countAttachments());
>>>         Iterator it = m.getAttachments();
>>>         while(it.hasNext())
>>>         {
>>>             AttachmentPart ap = (AttachmentPart)it.next();
>>>             dh = ap.getDataHandler();
>>>            ...
>>>         }
>>>
>>>I am using Axis 1.3 (CVS) and can send (Server->Client) large files (up
>>>to 1.2GB) without a problem.
>>>
>>>Hope this helps,
>>>Regards,
>>>Tom
>>>
>>>
>>>Axis User wrote:
>>>
>>>>Hi,
>>>>First some info...
>>>>
>>>>Platform: Axis 1.2.1, Java 1.5.0_04-b05, Linux 2.6.11.4-20a-default
>>>>
>>>>Aim: to send a zip file attached to a SOAP message and save it to a
>>>>directory. Zip files will on average be around 50Mb.
>>>>
>>>>Code:
>>>>//On the client side I add attachments as below:
>>>>
>>>>DataHandler handler = new DataHandler(new FileDataSource(file));
>>>>stub.addAttachment(handler);
>>>>
>>>>//server side retrieval
>>>>MessageContext msgContext = MessageContext.getCurrentContext();
>>>>Message requestMessage = msgContext.getRequestMessage();
>>>>int numAttachments = requestMessage.getAttachmentsImpl().getAttachmentCount();
>>>>
>>>>Problem:
>>>>The problem seems to be to me that my service method is being invoked
>>>>before the entire attachment has been transferred hence numAttachments
>>>>== 0 even though the client always sends an attachment. Is there a way
>>>>to determine that the entire message has been received before querying
>>>>the number of attachments? In this case the attachments are ~45mb
>>>>
>>>>Thanks,
>>>>Mike
>>>

Mime
View raw message