You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Raghu Upadhyayula <ru...@responsys.com> on 2007/12/05 18:58:36 UTC

[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.j
ava: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(BoundaryPu
shbackInputStream.java:172)

    at
org.apache.axiom.attachments.MIMEBodyPartInputStream.read(MIMEBodyPartIn
putStream.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(Attachme
nts.java:462)

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

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

    at
org.apache.axis2.transport.TransportUtils.deleteAttachments(TransportUti
ls.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(Applica
tionFilterChain.java:290)

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

    at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte
r.java:96)

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

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

    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:230)

    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:175)

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

    at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j
ava: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(CachedConn
ectionValve.java:157)

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

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

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

    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

 


Re: [Axis2] Problem using MTOM with a JPEG file.

Posted by Thilina Gunarathne <cs...@gmail.com>.
Hi Raghu,
I have used JPEG files with Axis2 MTOM earlier, but never came across
this issue.. Even the MTOM test cases in Axis2 uses a JPEG file.. What
is the size of the file.. If it's small, try to have a look at the
message using tcpmon (ws.apache.org/commons/tcpmon).

Did you try with the same JPEG file or did you try testing with
different JPEG files..

Anyway it's a gud idea to log a JIRA about this, together with your
JPEG file and if possible a test case...

thanks,
Thilina

On Dec 5, 2007 12:58 PM, Raghu Upadhyayula <ru...@responsys.com> wrote:
>
>
>
>
> 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(ReplyHeaderFilter.java: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(StandardWrapperValve.java:230)
>
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: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
>
>



-- 
Thilina Gunarathne  - http://thilinag.blogspot.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: [Axis2] Problem using MTOM with a JPEG file.

Posted by Martin Gainty <mg...@hotmail.com>.
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