I think I misread your reply on my first round. 

If I pulled the SimpleCxfRsBinding into 2.6.0, not the whole 2.11 jar, what 
would my camel route look like to make use of it including the port?  Would I 
still be using jetty or configuring a cxfRsBinding in XML/cfg?



Thanks again!

-----Original Message-----
From: Raul Kripalani [mailto:[email protected]] 
Sent: Thursday, April 18, 2013 3:42 PM
To: [email protected]
Subject: Re: CXF Bean, MultiPart -> Couldn't find MIME boundary

Why don't you use the CXFRS endpoint directly, instead of bridging over through 
Jetty? Something's probably going haywire with the combination of Jetty, CXF 
bean and Multiparts...

Note there's a new SimpleCxfRsBinding in 2.11 [1], which you can use in older 
versions by copying the class into your project, and referencing it as a 
standard binding like this:

from("cxfrs:bean:rsServer?binding=#cxfRsBinding")...
Then annotate your JAX-RS method with:

@POST
@Consumes("multipart/form-data")
public String postImage4(@FormParam("firstname") String firstname, 
@Multipart(name="image", type="application/octet-stream") Attachment file)) {
   return null;
}

The firstname should be available in a header "firstname", while the file 
should be placed in an IN message attachment called "image".

Note that the code of the JAX-RS method is not really used, as the response 
will be the output of the Camel route itself.

More info here [2].

[1]
https://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SimpleCxfRsBinding.java
[2]
http://camel.apache.org/cxfrs.html#CXFRS-ConsumingaRESTRequestSimpleBindingStyle

Regards,

*Raúl Kripalani*
Enterprise Architect, Open Source Integration specialist, Program Manager | 
Apache Camel Committer http://about.me/raulkripalani | 
http://www.linkedin.com/in/raulkripalani
http://blog.raulkr.net | twitter: @raulvk

On Thu, Apr 18, 2013 at 9:28 PM, Calvert, Zach (Zach)** CTR ** < 
[email protected]> wrote:

> Hello Christian,
> Thank you for your help.  Unfortunately that didn't change the outcome.
>  The AttachmentDeserializer class's "readTillFirstBoundary" still 
> exits upon the first read due to a -1 from the first read of the IO 
> stream.  I have tried FireFox, Chrome, and IE.  Any other ideas?  
> Could it be my HTML form?
>
> <html>
>         <body>
>                 <form enctype='multipart/form-data' method='post'
> action='/submit'>
>                         <INPUT type='text' id='firstname'>
>                         <BR>
>                         <input type='file' name='image'>
>                         <br>
>                         <input type='submit' value='Send'>
>                 </form>
>         </body>
> </html>
>
> If not, could I be doing something wrong with my CXF function 
> receiving the message?
>
> I've tried both of the following:
>     @POST
>     @Path("submit")
>     @Produces("text/html")
>     public String postImage4(Message message) {
>         return "hello " + message;
>     }
>
>     @POST
>     @Path("submit")
>     @Produces("text/html")
>     public String postImage4(List<Attachment> atts) {
>         return "hello " + atts;
>     }
>
> I've also confirmed I can get to the request by returning the html 
> form from a
>
>     @GET
>     @Path("submit")
>     @Produces("text/html")
>     public String postImage4() {
>         return "<html><body><form enctype='multipart/form-data'
> method='post' action='/submit'><INPUT type='text' 
> id='firstname'><BR><input type='file' name='image'> <br><input type='submit'
> value='Send'></form></body></html>";
>     }
>
> I don't think it is pathing since the error is occurring in an 
> interceptor but I'll entertain any ideas at this point.
>
>
>
> Thanks,
> Zach Calvert
>
>
>
>
>
>
> -----Original Message-----
> From: Christian Müller [mailto:[email protected]]
> Sent: Wednesday, April 17, 2013 4:58 PM
> To: [email protected]
> Subject: Re: CXF Bean, MultiPart -> Couldn't find MIME boundary
>
> Can you enable stream caching and try it again.
>
> http://camel.apache.org/stream-caching.html
>
> Best,
> Christian
>
> Sent from a mobile device
> Am 17.04.2013 23:53 schrieb "Calvert, Zach (Zach)** CTR **" <
> [email protected]>:
>
> > I'm having trouble submitting a multi-part form to a CXF endpoint.  
> > My route looks like:
> >         <camel:route id="submitform">
> >             <camel:from uri="jetty:
> > https://0.0.0.0:9005/submit/?matchOnUriPrefix=true"/>
> >             <camel:log message="Request received" loggingLevel="DEBUG"/>
> >             <camel:to uri="cxfbean:consumerList"/>
> >         </camel:route>
> > Where the list is a util list of 1 endpoint consuming a POST method.
> > The HTML form code is retrieved from the same path using a GET,
> resulting in:
> >
> > <html>
> >     <body>
> >         <form enctype='multipart/form-data' method='post'
> action='/submit'>
> >             <INPUT type='text' id='firstname'>
> >             <BR>
> >             <input type='file' name='image'>
> >             <BR>
> >             <input type='submit' value='Send'>
> >         </form>
> >     </body>
> > </html>
> >
> > Submitting a post triggers this in the logs:
> > 2013-04-17 15:55:40,900 | WARN  | qtp11314826-356  |
> > WebApplicationExceptionMapper    |  -  -  | WebApplicationException has
> > been caught : Couldn't find MIME boundary:
> > -----------------------------173102388111750
> >
> > I walked the code to 
> > org.apache.cxf.attachment.AttachmentDeserializer
> > Where it obtains the "InputStream" content body using:
> > ...
> >             boundary = boundaryString.getBytes("utf-8");
> >
> >             stream = new
> > PushbackInputStream(message.getContent(InputStream.class),
> >                                              pbAmount); ...
> >
> > The resulting InputStream from the CXF Message, while non-null, 
> > always returns -1 at the first read.  In other words, this 
> > InputStream is empty 100% of the time.  I've verified using 
> > different browsers that the content is submitted, and the MIME 
> > boundary is populated in the content.  What is going on with the 
> > input stream?  Have I configured my CXF endpoint incorrectly in some 
> > way, or am I missing a configuration
> detail in the form?
> >
> > Any and all help is greatly appreciated!
> >
> >
> > Thank you,
> > Zach Calvert
> >
> >
> >
>

Reply via email to