Hi,
Besides use the camel way, I think you also can insert servciemix-bean endpoint between servicemix-cxf-bc and servicemix-file, the servicemix-bean endpoint play the role both as provider (for cxf bc endpoint InOut) and consumer(for file endpoint InOnly), like you do the bridge yourself in bean endpoint. By this way, you can control to put something you want to the MessagExchange back to cxf bc, which in turn back to the externel client. For example, if your bean fail to send InOnly to fileendpint (something like timeout), then you can set faultmessage of MessagExchange back to cxf bc, if send InOnly to fileendpoint successfully, then set outmessage content like "OK" of MessagExchange back to cxf bc.
Freeman


Jean-Baptiste Onofré wrote:
Correct, processInOut method in ProviderEndpoint only raise the exception.

From my point of view, it makes sense to support InOut MEP at least in the sender endpoint.

Maybe you can raise a JIRA to add this MEP support.

Nevertheless, using Camel, you can define the Camel endpoint MEP, for example, in a route like this:

from("jbi:endpoint:http://foo.bar.org/MyService/MyEndpoint";).to("jbi:endpoint:http://foo.bar.org/MyService/OtherEndpoint?mep=in";);

I have never do this, but you can try :)

Regards
JB

Benoît Clouet wrote:
Thanks,

in case it is needed here's the full stacktrace :
java.lang.UnsupportedOperationException: Unsupported MEP:
http://www.w3.org/2004/08/wsdl/in-out
at org.apache.servicemix.common.endpoints.ProviderEndpoint.processInOut(ProviderEndpoint.java:134) at org.apache.servicemix.file.FileSenderEndpoint.processInOut(FileSenderEndpoint.java:105) at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:109) at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538) at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490) at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172) at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167) at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

I also discovered in the source code of ProviderEndpoint that the
method simply throws the exception.

Now the questions becomes : How can I transform an InOut MEP issued by
the CXF-bc into an InOnly message ? Is there a way to do this cleanly
with, let's say Camel (I'm really reluctant to write a bean for this)
?

Kind regards,

Benoît

On Thu, Jun 4, 2009 at 4:21 PM, Jean-Baptiste Onofré <[email protected]> wrote:
Hi Benoît,

I have checked into the servicemix-file component. Regarding the
FileSenderEndpoint, it supports InOnly and InOut MEP: it contains
processInOnly() and processInOut() methods.
Nevertheless the processInOut() method simply calls the super class
processInOut() method aka the ProviderEndpoint class.

Let me try.

Regards
JB

Benoît Clouet wrote:
Hi,

I'm currently trying to implement a cxf-bc consumer to file-bc sender
exchange. A WSDL defines the messages (IN and OUT) and is referenced by the cxf-bc. The client of the cxf web service expects some ack as a response to
the webservice call.

An XML to csv transformation is done at file marshaller level.

My first try results in an unsupported MEP error. I guess it is because
the file-bc only supports in-only MEP.

I know I could achieve this by using a bean-se, but I really would like to leverage the file component functionalities. Is there a way to work this around either at the cxf level or by using some other component like the
camel-se ? Should I consider another approach ?

Benoît



--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com

Reply via email to