Hi all,

I just wanted to write back to the group to indicate that the problem
has been resolved: I was correctly configuring axis2 with the
BinaryBuilder/Formatter as follows:

<messageFormatter contentType="application/octet-stream"
                  class="org.apache.axis2.format.BinaryFormatter"/>

...

<messageBuilder contentType="application/octet-stream"
                class="org.apache.axis2.format.BinaryBuilder"/>

The problem I was having was that I didn't have any mediators set up for
the incoming binary message. Thus, the output of the binary builder
("<binary>...</binary") was being passed directly to the response. The
problem was that the content type of the message after it was processed
by the BinaryBuilder was application/xml. Since I didn't have any more
mediators set up, Synapse dutifully forwared that in-memory XML to the
response. Once I added a property mediator that set the content type to
application/octet-stream, the BinaryFormatter was called during the
response process and the binary was output just fine. The final proxy
config that accomplished the pass-through follows:

        <proxy name="binary" transports="http" startOnLoad="true">
                <target>
                <endpoint>
                                <address uri="http://server:8080/";
format="rest" />        
                </endpoint>
                <outSequence>
                                <property action="set" scope="axis2"
name="messageType" value="application/octet-stream"/>
                                <send/>
                        </outSequence>
                </target>
        </proxy>

--GKC


-----Original Message-----
From: Supun Kamburugamuva [mailto:[email protected]] 
Sent: Tuesday, July 14, 2009 3:37 PM
To: [email protected]
Subject: Re: Passing non-XML body content for REST services

Hi,
How about using org.apache.axis2.format.PlainTextFormatter
and org.apache.axis2.format.PlainTextBuilder?

Thanks,
Supun..

On Tue, Jul 14, 2009 at 10:16 AM, Coulombe, Greg
<[email protected]>wrote:

> Sure. Here is the synapse.xml, axis2.xml is below:
>
> <definitions xmlns="http://ws.apache.org/ns/synapse";>
>        <endpoint name="myEndPoint">
>                <address uri="http://localhost:8080/myendpoint";
> format="rest" />
>        </endpoint>
>
>        <proxy name="myProxy" transports="http" startOnLoad="true">
>                <target>
>                        <inSequence>
>                                <send>
>                                        <endpoint key="myEndPoint" />
>                                </send>
>                        </inSequence>
>                        <outSequence>
>                                <send/>
>                        </outSequence>
>                </target>
>        </proxy>
>        <sequence name="errorHandler">
>                <log level="full" />
>        </sequence>
> </definitions>
>
> Snippets from axis2.xml:
>
> <messageBuilder contentType="*/*"
> class="org.apache.axis2.format.BinaryBuilder"/>
> ...
> <messageFormatter contentType="*/*"
> class="org.apache.axis2.format.BinaryFormatter"/>
>
> What should I modify to enable plain text, JSON and binary data to
pass
> through without change?
>
> Thanks,
>
> --GKC
>
> -----Original Message-----
> From: Andreas Veithen [mailto:[email protected]]
> Sent: Tuesday, July 14, 2009 12:45 AM
> To: [email protected]
> Subject: Re: Passing non-XML body content for REST services
>
> That should be possible. Can you post your synapse.xml file?
>
> Andreas
>
> On Mon, Jul 13, 2009 at 13:23, Coulombe,
Greg<[email protected]>
> wrote:
> > Hello,
> >
> > I am developing some REST services (using the a 1.3 snapshot build
of
> > synapse) and I'd like to use Synapse to proxy REST service calls
that
> > return (or accept) non-XML content. How do I configure Synapse to
> proxy
> > that content without wrapping it in an XML element? The content
types
> > that I am interested in proxying are JSON and Binary. I have been
> > playing with the Axis2 BinaryFormatter and BinaryBuilder and it
seems
> > close to what I am looking for but not exactly correct: when I call
> GET
> > against a service that returns a content type of
> > application/octet-stream, I get back the binary content but it is
MIME
> > encoded (I think) in a <binary/> element. Is there a way to
configure
> > synapse/axis2 to simply pass that binary data through untouched?
> > Similarly, I would like to do this with plain text and/or JSON data
> too.
> >
> > Thanks,
> >
> > Greg Coulombe
> >
> >
> >
>



-- 
Software Engineer, WSO2 Inc
http://wso2.org
supunk.blogspot.com

Reply via email to