You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by "John D. Ament" <jo...@gmail.com> on 2013/07/31 19:26:38 UTC

Correct way to read a CXF Message in MESSAGE format

Hi all

I'm dynamically binding a CXF endpoint to a processor instance, using a
route like this:

from(simpleEndpointURI +
"?dataFormat=MESSAGE&wsdlURL=wsdl/Import.wsdl&loggingFeatureEnabled=true").process(new
ImportProcessor());

I setup a simple way of reading this body using an InputStream, but this
seems wrong.  I'm trying to get the soap headers and the soap body of the
message.  I'm using MESSAGE dataFormat because I can't seem to get the
mustunderstand to process correctly without it.

>From the docs:

MESSAGEMESSAGE is the raw message that is received from the transport
layer. It is not suppose to touch or change Stream, some of the CXF
interceptor will be removed if you are using this kind of DataFormat so you
can't see any soap headers after the camel-cxf consumer and JAX-WS handler
is not supported.



Which is fine for me, all I need is some data simply from the body.  But is
it possible to access the headers? I see everything fine in the
InputStream, but it would make more sense if this were available somehow in
a POJO/Java format.  Is there a way I can use another dataFormat but get it
to generate the MustUnderstand properly?

Thanks,

John

Re: Correct way to read a CXF Message in MESSAGE format

Posted by "John D. Ament" <jo...@gmail.com>.
I ended up using DOM against the body of the message.  Not sure if there's
a better way.


On Wed, Jul 31, 2013 at 9:36 PM, Willem jiang <wi...@gmail.com>wrote:

> I think you can try to use the CXF_MESSAGE data format.
> This data format will consume the stream and invoke all the interceptors,
> and you can get the full of soap message from the camel body, I think you
> can get he soap header easily there.
>
>
> --
> Willem Jiang
>
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Web: http://www.fusesource.com | http://www.redhat.com
> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
> (English)
>           http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> Twitter: willemjiang
> Weibo: 姜宁willem
>
>
>
>
> On Thursday, August 1, 2013 at 1:26 AM, John D. Ament wrote:
>
> > Hi all
> >
> > I'm dynamically binding a CXF endpoint to a processor instance, using a
> > route like this:
> >
> > from(simpleEndpointURI +
> >
> "?dataFormat=MESSAGE&wsdlURL=wsdl/Import.wsdl&loggingFeatureEnabled=true").process(new
> > ImportProcessor());
> >
> > I setup a simple way of reading this body using an InputStream, but this
> > seems wrong. I'm trying to get the soap headers and the soap body of the
> > message. I'm using MESSAGE dataFormat because I can't seem to get the
> > mustunderstand to process correctly without it.
> >
> > From the docs:
> >
> > MESSAGEMESSAGE is the raw message that is received from the transport
> > layer. It is not suppose to touch or change Stream, some of the CXF
> > interceptor will be removed if you are using this kind of DataFormat so
> you
> > can't see any soap headers after the camel-cxf consumer and JAX-WS
> handler
> > is not supported.
> >
> >
> >
> > Which is fine for me, all I need is some data simply from the body. But
> is
> > it possible to access the headers? I see everything fine in the
> > InputStream, but it would make more sense if this were available somehow
> in
> > a POJO/Java format. Is there a way I can use another dataFormat but get
> it
> > to generate the MustUnderstand properly?
> >
> > Thanks,
> >
> > John
>
>
>

Re: Correct way to read a CXF Message in MESSAGE format

Posted by Willem jiang <wi...@gmail.com>.
I think you can try to use the CXF_MESSAGE data format.
This data format will consume the stream and invoke all the interceptors, and you can get the full of soap message from the camel body, I think you can get he soap header easily there.


--  
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem




On Thursday, August 1, 2013 at 1:26 AM, John D. Ament wrote:

> Hi all
>  
> I'm dynamically binding a CXF endpoint to a processor instance, using a
> route like this:
>  
> from(simpleEndpointURI +
> "?dataFormat=MESSAGE&wsdlURL=wsdl/Import.wsdl&loggingFeatureEnabled=true").process(new
> ImportProcessor());
>  
> I setup a simple way of reading this body using an InputStream, but this
> seems wrong. I'm trying to get the soap headers and the soap body of the
> message. I'm using MESSAGE dataFormat because I can't seem to get the
> mustunderstand to process correctly without it.
>  
> From the docs:
>  
> MESSAGEMESSAGE is the raw message that is received from the transport
> layer. It is not suppose to touch or change Stream, some of the CXF
> interceptor will be removed if you are using this kind of DataFormat so you
> can't see any soap headers after the camel-cxf consumer and JAX-WS handler
> is not supported.
>  
>  
>  
> Which is fine for me, all I need is some data simply from the body. But is
> it possible to access the headers? I see everything fine in the
> InputStream, but it would make more sense if this were available somehow in
> a POJO/Java format. Is there a way I can use another dataFormat but get it
> to generate the MustUnderstand properly?
>  
> Thanks,
>  
> John