camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume Nodet" <gno...@gmail.com>
Subject Re: Example of request reply
Date Tue, 18 Sep 2007 14:27:54 GMT
Yeah, i'm trying to dig into it.
What i'd like to do is use cxf just for soap processing.
Ideally, i'd like to have:

from(soap("http://localhost:8192/service")).
   process(xx).
   to(soap("http://myhost:8080/another")).
   process(yy)

which would not do any service invocation at all.
and this would require the DSL to be enhanced, but it would be like the
following (with the current dsl).

Ideally, i'd like to be able to write:

from("http://localhost:8192/service").
  process(new SoapConsumerServerProcessor()).
  process(xxx).
  process(new SoapProviderClientProcessor()).
  to("http://myhost:8080/another").
  process(new SoapProviderServerProcessor()).
  process(yy)
  process(new SoapConsumerClientProcessor())

which means:
  * receive an http request,
  * perform any soap handling (ws-*) and set the content of the soap message
as the body of the in message
  * process xxx
  * wrap the message in a soap envelope
  * send the soap request to the target service
  * unwrap the soap response
  * process yyy
  * wrap the message as a soap response
  * send it back as the http response

This is for the SOAP handling part.

I'd like to be able to expose JAXWS pojo inside camel, but without any soap
handling, so that while inside camel, you would not use any soap stuff and
you could invoke the bean with plain xml / pojo.

So at the end, you could write:
   from(soap("http://localhost:8080")).to("cxf:
org.apache.camel.component.cxf.HelloService")

or something like that and that would expose the service over http.

Now, my understanding of the cxf component is the following:
  * the consumer consumes soap requests using the cxf transports, performs
the soap processing, unmarshal the data as a list of parameters (this
depends on the DataFormat) and send it to the bus
  * the producer receives a message which contains the raw message or the
list of unmarshaled parameters, invokes the bean and send the response back.
  * i don't understand how to call an external service using camel-cxf
        from(xxx).to("cxf:http://remotehost:8080/service")
  * the DataFormat controls where the marshaling occurs (on the consumer or
on the producer side)
  * there is no way to use jaxws to call a service inside camel using a
client proxy

I think creating a CXF binding and a transport (it seems the current one is
not used) as we did for JBI may be a way to solve these problems.

Thoughts ?


On 9/18/07, Willem Jiang <willem.jiang@gmail.com> wrote:
>
> Hi Nodet
>
> Yes, and it can perform more than service invocation part.  you can find
> more information by check camel-cxf component code :)
>
> Cheers,
> Willem.
>
> Guillaume Nodet wrote:
> > Hi Willem!
> > Does the cxf component performs any soap processing using cxf ? Or is it
> > just the marshaling / service invocation part ?
> > I'd like to leverage cxf for soap processing...
> >
> > On 9/18/07, Willem Jiang <willem.jiang@gmail.com> wrote:
> >
> >> Hi ,
> >> I am working on camel-cxf component which will help you to do some
> >> router work between 2 Web Services. My big patch just been applied in
> >> the trunk, you can take a look at the unit test of camel-cxf component.
> >>
> >>
> https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfRouterTest.java
> >> I will add a Web Service router example some time this week  :)
> >>
> >> Willem.
> >> xtof wrote:
> >>
> >>> Hello,
> >>>
> >>> I'm quite new to Camel, and I'm trying to understand how implementing
> a
> >>> gateway between 2 Web Services. It requires to implement a
> request-reply
> >>> mechanism but I cannot find any example.
> >>> Could you help?
> >>>
> >>> Thank.
> >>> Christophe
> >>>
> >>>
> >>
> >
> >
> >
>
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message