Currently, only multipart/related mime type (RFC2387) is supported.
Other multipart contents are not supported :(
This includes
* multipart/mixed (RFC1521)
* multipart/formdata (RFC1867)
I'm trying to see if it is possible to support them.
Cheers,
Guillaume Nodet
On 3/22/06, Stefan Klinger <[EMAIL PROTECTED]> wrote:
> Thanks Guillaume,
>
> I have tried using the HttpComponent, but it threw an exception in the
> DeliveryChannel and ReceiverComponent. My client code is the following:
>
> File f = new File("some_file.txt");
> PostMethod filePost = new
> PostMethod("http://localhost:8192/Service/");
> Part[] parts = { new StringPart("param_name", "value"),
> new FilePart(f.getName(), f) };
> filePost.setRequestEntity(
> new MultipartRequestEntity(parts, filePost.getParams()) );
> HttpClient client = new HttpClient();
> int status = client.executeMethod(filePost);
> filePost.releaseConnection();
>
> and my XmlBeans configuration file is the following
>
> <sm:activationSpec>
> <sm:component>
> <http:component>
> <http:endpoints>
> <http:endpoint service="test:MyConsumerService"
> endpoint="myConsumer"
> role="consumer"
>
> locationURI="http://localhost:8192/Service/"
>
> defaultMep="http://www.w3.org/2004/08/wsdl/in-only" />
> </http:endpoints>
> </http:component>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec service="test:MyConsumerService"
> endpoint="myConsumer">
> <sm:component>
> <bean class="org.apache.servicemix.tck.ReceiverComponent" />
> </sm:component>
> </sm:activationSpec>
>
> and I get the following exceptions
>
> [edThreadPool0-1] DEBUG DeliveryChannel - Unable to
> display message
> org.xml.sax.SAXParseException: Content is not allowed in prolog.
> at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
> at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
> at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:123)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSourceFromStream(SourceTransformer.java:221)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransformer.java:136)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.java:275)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.traceMessageExchange(DeliveryChannelImpl.java:297)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:388)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:490)
> at
> org.apache.servicemix.common.BaseLifeCycle.sendConsumerExchange(BaseLifeCycle.java:389)
> at
> org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:131)
> at
> org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:70)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>
> SEVERE: [EMAIL PROTECTED] got
> error processing [EMAIL PROTECTED]
> javax.jbi.messaging.MessagingException: org.xml.sax.SAXParseException:
> Content is not allowed in prolog.
> at
> org.apache.servicemix.components.util.CopyTransformer.transform(CopyTransformer.java:80)
> at
> org.apache.servicemix.tck.ReceiverComponent.onMessageExchange(ReceiverComponent.java:47)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:636)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:171)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:221)
> at
> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
> at
> EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
> at
> com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:264)
> at
> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)
> at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:123)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSourceFromStream(SourceTransformer.java:221)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransformer.java:136)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.java:275)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTransformer.java:302)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTransformer.java:144)
> at
> org.apache.servicemix.components.util.CopyTransformer.transform(CopyTransformer.java:68)
> ... 7 more
>
> Thanks,
> Stefan
>
> Guillaume Nodet wrote:
>
> >The servicemix-http component handles MIME attachments.
> >You should give it a try.
> >
> >Cheers,
> >Guillaume Nodet
> >
> >On 3/22/06, Stefan Klinger <[EMAIL PROTECTED]> wrote:
> >
> >
> >>Hello all,
> >>
> >>I am trying to include a file upload facility using http within my
> >>project. Unfortunately, my file is not an xml document, so it should be
> >>treated as an attachment. If I am correct, the HttpMarshaler only
> >>accepts xml documents which are set to the message content. Would there
> >>be a way to accept non-xml files and set them as message attachments
> >>(similar to the SaajMarshaler)? Or is there another, more elegant way of
> >>doing this?
> >>
> >>Thanks,
> >>Stefan
> >>
> >>
> >>
>
>