thank JB for the respose, But i don't set the done status in my code,
following is bean code
public class MessageLogger implements MessageExchangeListener {
@Resource
private DeliveryChannel channel;
private static final Log logger =
LogFactory.getLog(MessageLogger.class);
public void onMessageExchange(MessageExchange exchange) throws
MessagingException {
if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
InOut inOut = (InOut)exchange;
NormalizedMessage normalizedMessage = inOut.getInMessage();
String outMessage = processXml(normalizedMessage);
//mapIds(inMessage);
System.out.println("## Sending message back exchange
with status
ACTIVE:BeanLogger string " +outMessage);
normalizedMessage.setContent(new
StringSource(outMessage));
MessageUtil.transferInToOut(inOut, inOut);
channel.send(inOut);
} else{
logger.debug("## Received exchange but status not ACTIVE: " +
exchange);
}
}
private String processXml(NormalizedMessage normalizedMessage)
throws MessagingException {
SourceTransformer sourceTransformer = new
SourceTransformer();
String inMessage = "";
try {
inMessage =
sourceTransformer.contentToString(normalizedMessage);
} catch (Exception e) {
throw new MessagingException(e);
}
System.out.println("intMessage::" + inMessage);
return inMessage;
}
}
thanks for the help,
Brijesh N K
Jean-Baptiste Onofré wrote:
>
> Do you have check if the smx-bean2 service doesn't done the exchange
> (using done(exchange) in the code) ?
> The problem is that the cxf-bc(provider) service receive an exchange
> with the status DONE, so it can't be processed.
>
> Regards
> JB
>
> brijesh wrote:
>> hello,
>>
>> Following is my work flow
>>
>> |->smx-bean1
>> cxf-bc->smx-eip--|->smx-bean2
>> |->cxf-bc(provider)
>>
>> cxf-bc(provider) is asynchronised service call(there is no out param in
>> service)
>>
>> when i am executing gives following error ,
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>> <soap:Body>
>> <soap:Fault>
>> <faultcode>soap:Server</faultcode>
>> <faultstring>illegal exchange status: done</faultstring>
>> </soap:Fault>
>> </soap:Body>
>> </soap:Envelope>
>>
>> complete error stack as follows
>>
>> javax.jbi.messaging.MessagingException: illegal exchange status: done
>> at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:626)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:386)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:432)
>> at
>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:88)
>> at
>> org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:254)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:554)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510)
>> at
>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>> at java.lang.Thread.run(Thread.java:595)
>> INFO - PhaseInterceptorChain - Interceptor has thrown
>> exception,
>> unwinding now
>> org.apache.cxf.interceptor.Fault: illegal exchange status: done
>> at
>> org.apache.servicemix.cxfbc.CxfBcConsumer$JbiPostInvokerInterceptor.handleMessage(CxfBcConsumer.java:722)
>> at
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:226)
>> at
>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89)
>> at
>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:295)
>> at
>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:258)
>> at
>> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
>> at
>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
>> at
>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>> at
>> org.mortbay.jetty.handler.HandlerList.handle(HandlerList.java:49)
>> at
>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>> at org.mortbay.jetty.Server.handle(Server.java:324)
>> at
>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
>> at
>> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879)
>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741)
>> at
>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:213)
>> at
>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
>> at
>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
>> at
>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
>> Caused by: javax.jbi.messaging.MessagingException: illegal exchange
>> status:
>> done
>> at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:626)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:386)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:432)
>> at
>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:88)
>> at
>> org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:254)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:554)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510)
>> at
>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>> at java.lang.Thread.run(Thread.java:595)
>>
>>
>>
>>
>> cxf-provider xbean config as follows
>>
>> <cxfbc:provider wsdl="classpath:EkaPoImportProcess.wsdl"
>>
>> locationURI="http://oracleebs.ekablr.com:80/orabpel/default/EkaPoImportProcess/1.10"
>> service="imp:EkaPoImportProcess"
>> endpoint="EkaPoImportProcessPort"
>> interfaceName="imp:EkaPoImportProcess"/>
>>
>> following is wsdl.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <definitions
>> name="EkaPoImportProcess"
>> targetNamespace="http://xmlns.oracle.com/EkaPoImportProcess"
>> xmlns="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:tns="http://xmlns.oracle.com/EkaPoImportProcess"
>> xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing"
>> xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>> xmlns:client="http://xmlns.oracle.com/EkaPoImportProcess"
>> >
>> <types>
>> <schema xmlns="http://www.w3.org/2001/XMLSchema">
>> <import
>> namespace="http://xmlns.oracle.com/EkaPoImportProcess"
>> schemaLocation="EkaPoImportProcess.xsd"/>
>> </schema>
>> <schema xmlns="http://www.w3.org/2001/XMLSchema">
>> <import
>> namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing"
>> schemaLocation="http://oracleebs.ekablr.com:80/orabpel/xmllib/ws-addressing.xsd"/>
>> </schema>
>> </types>
>> <message name="EkaPoImportProcessRequestMessage">
>> <part name="payload"
>> element="tns:EkaPoImportProcessProcessRequest"/>
>> </message>
>> <message name="EkaPoImportProcessResponseMessage">
>> <part name="payload"
>> element="tns:EkaPoImportProcessProcessResponse"/>
>> </message>
>> <message name="WSARelatesToHeader">
>> <part name="RelatesTo" element="wsa:RelatesTo"/>
>> </message>
>> <message name="WSAReplyToHeader">
>> <part name="ReplyTo" element="wsa:ReplyTo"/>
>> </message>
>> <message name="WSAMessageIDHeader">
>> <part name="MessageID" element="wsa:MessageID"/>
>> </message>
>> <portType name="EkaPoImportProcess">
>> <operation name="initiate">
>> <input message="tns:EkaPoImportProcessRequestMessage"/>
>> </operation>
>> </portType>
>> <portType name="EkaPoImportProcessCallback">
>> <operation name="onResult">
>> <input message="tns:EkaPoImportProcessResponseMessage"/>
>> </operation>
>> </portType>
>> <binding name="EkaPoImportProcessCallbackBinding"
>> type="tns:EkaPoImportProcessCallback">
>> <soap:binding style="document"
>> transport="http://schemas.xmlsoap.org/soap/http"/>
>> <operation name="onResult">
>> <soap:operation style="document" soapAction="onResult"/>
>> <input>
>> <soap:header message="tns:WSARelatesToHeader"
>> part="RelatesTo" use="literal" encodingStyle=""/>
>> <soap:body use="literal"/>
>> </input>
>> </operation>
>> </binding>
>> <binding name="EkaPoImportProcessBinding"
>> type="tns:EkaPoImportProcess">
>> <soap:binding style="document"
>> transport="http://schemas.xmlsoap.org/soap/http"/>
>> <operation name="initiate">
>> <soap:operation style="document" soapAction="initiate"/>
>> <input>
>> <soap:header message="tns:WSAReplyToHeader"
>> part="ReplyTo"
>> use="literal" encodingStyle=""/>
>> <soap:header message="tns:WSAMessageIDHeader"
>> part="MessageID" use="literal" encodingStyle=""/>
>> <soap:body use="literal"/>
>> </input>
>> </operation>
>> </binding>
>> <service name="EkaPoImportProcess">
>> <port name="EkaPoImportProcessPort"
>> binding="tns:EkaPoImportProcessBinding">
>> <soap:address
>> location="http://oracleebs.ekablr.com:80/orabpel/default/EkaPoImportProcess/1.10"/>
>> </port>
>> </service>
>> <service name="EkaPoImportProcessCallbackService">
>> <port name="EkaPoImportProcessCallbackPort"
>> binding="tns:EkaPoImportProcessCallbackBinding">
>> <soap:address location="http://set.by.caller"/>
>> </port>
>> </service>
>> <plnk:partnerLinkType name="EkaPoImportProcess">
>> <plnk:role name="EkaPoImportProcessRequester">
>> <plnk:portType name="tns:EkaPoImportProcessCallback"/>
>> </plnk:role>
>> <plnk:role name="EkaPoImportProcessProvider">
>> <plnk:portType name="tns:EkaPoImportProcess"/>
>> </plnk:role>
>> </plnk:partnerLinkType>
>> </definitions>
>>
>
>
--
View this message in context:
http://www.nabble.com/illegal-exchange-status%3A-done-tp23290783p23307087.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.