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