Base64 (non-optimisable) and MTOM (optimisable) technologies are complimentary
http://ws.apache.org/axis2/1_1_1/mtom-guide.html

ONE possible workaround is to enable SWA
 options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);

have your client.addMessageContext(MessageContext) where the messageContext has 
an added Base64 Attachment
MessageContext.addAttachment("Attachment",datahandler);

where the Datahandler is a wrapper on a Datasource 
dataHandler =new DataHandler(fileDataSource);

and the datasource is a wrapper DataSource for your Base64 file
FileDataSource fileDataSource = new FileDataSource("whatever.jpg");

M-
  ----- Original Message ----- 
  From: Raghu Upadhyayula 
  To: axis-user@ws.apache.org 
  Sent: Wednesday, December 05, 2007 12:58 PM
  Subject: [Axis2] Problem using MTOM with a JPEG file.


  Hi,

   

  I have a webservice which is used to upload images to the server.

   

  I'm getting an exception if I am sending a JPEG file with MTOM enabled.  It 
works fine if MTOM is not enabled (Base64 encoded).  It works fine if I send a 
GIF file with or without MTOM enabled.

   

  Here is the exception I'm getting.  Is this a bug? (I'm using Axis2 1.3 
Version).

   

  17:30:43,469 ERROR [[AxisServlet]] Servlet.service() for servlet AxisServlet 
threw exception

  java.lang.ArrayIndexOutOfBoundsException

      at java.lang.System.arraycopy(Native Method)

      at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:414)

      at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:312)

      at 
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)

      at java.io.BufferedInputStream.fill(Unknown Source)

      at java.io.BufferedInputStream.read1(Unknown Source)

      at java.io.BufferedInputStream.read(Unknown Source)

      at java.io.FilterInputStream.read(Unknown Source)

      at java.io.PushbackInputStream.read(Unknown Source)

      at 
org.apache.axiom.attachments.BoundaryPushbackInputStream.readFromStream(BoundaryPushbackInputStream.java:102)

      at 
org.apache.axiom.attachments.BoundaryPushbackInputStream.readFromStream(BoundaryPushbackInputStream.java:122)

      at 
org.apache.axiom.attachments.BoundaryPushbackInputStream.read(BoundaryPushbackInputStream.java:172)

      at 
org.apache.axiom.attachments.MIMEBodyPartInputStream.read(MIMEBodyPartInputStream.java:87)

      at java.io.BufferedInputStream.fill(Unknown Source)

      at java.io.BufferedInputStream.read(Unknown Source)

      at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)

      at javax.mail.internet.InternetHeaders.load(InternetHeaders.java:329)

      at javax.mail.internet.InternetHeaders.<init>(InternetHeaders.java:301)

      at javax.mail.internet.MimeBodyPart.<init>(MimeBodyPart.java:168)

      at org.apache.axiom.attachments.PartOnMemory.<init>(PartOnMemory.java:34)

      at org.apache.axiom.attachments.Attachments.getPart(Attachments.java:598)

      at 
org.apache.axiom.attachments.Attachments.getNextPartDataHandler(Attachments.java:462)

      at 
org.apache.axiom.attachments.Attachments.getContentIDSet(Attachments.java:427)

      at 
org.apache.axiom.attachments.Attachments.getAllContentIDs(Attachments.java:420)

      at 
org.apache.axis2.transport.TransportUtils.deleteAttachments(TransportUtils.java:481)

      at 
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:189)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

      at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilterjava:96)

      at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

      at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValvejava:230)

      at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValvejava:175)

      at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)

      at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)

      at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

      at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

      at 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)

      at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

      at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)

      at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

      at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)

      at java.lang.Thread.run(Unknown Source)

   

  Thanks

  Raghu

   

Reply via email to