Here is the synapse.log output with DEBUG level tracing when it gets to the <send> mediator:
2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG SendMediator Start : Send mediator 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG EndpointContext Checking if endpoint : AnonymousEndpoint currently at state ACTIVE can be used now? 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG AddressEndpoint Sending message through endpoint : null resolving to address = fix://localhost:9876?BeginString=FIX.4.2&SenderCompID=OPTMED&TargetCompID=BROKER 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG AddressEndpoint SOAPAction: 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG AddressEndpoint WSA-Action: 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG Axis2FlexibleMEPClient Sending [add = false] [sec = false] [rm = false] [mtom = false] [swa = false] [format = null] [force soap11=false] [force soap12=false] [pox=false] [get=false] [encoding=null] [to Address: http://www.w3.org/2005/08/addressing/anonymous] 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG Axis2FlexibleMEPClient Message [Original Request Message ID : urn:uuid:920AD729A39F5B343582610572454048-351516953] [New Cloned Request Message ID : urn:uuid:920AD729A39F5B343582624861297747737116756] 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG SynapseCallbackReceiver Callback added. Total callbacks waiting for : 1 2009-07-16 10:25:38,255 [-] [SynapseWorker-1] DEBUG FIXTransportSender Attempting to send a FIX message, Message ID:urn:uuid:920AD729A39F5B343582624861297747737116756 2009-07-16 10:25:38,375 [-] [SynapseWorker-1] ERROR Axis2Sender Unexpected error during sending message out org.apache.axis2.AxisFault: Unable to find a valid service for the message at org.apache.synapse.transport.fix.FIXUtils.getServiceName(FIXUtils.java:655) at org.apache.synapse.transport.fix.FIXTransportSender.sendMessage(FIXTransportSender.java:103) at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:190) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:174) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:343) at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:56) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:176) at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:194) at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59) at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:75) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:115) at org.apache.synapse.mediators.MediatorWorker.run(MediatorWorker.java:69) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:595) 2009-07-16 10:25:39,597 [-] [SynapseWorker-1] WARN MediatorWorker Executing fault handler due to exception encountered PrgTrdr wrote: > > Thanks Hiranya, > > I believe you are offering the correct solution, however I'm still not > getting it right. (FYI, I am using a snapshot that is about 1 month old.) > > 1. At your suggestion, I inserted the following <send> mediator in my > <out> sequence. > <send> > <endpoint> > <address > uri="fix://localhost:9876?BeginString=FIX.4.2&amp;SenderCompID=OPTMED&amp;TargetCompID=BROKER"/> > </endpoint> > </send> > > 2. When it reaches this point, Synapse gives the exception, "Unable to > find a valid service for the message". Here is the log output: > 2009-07-16 09:37:51,343 [-] [SynapseWorker-2] INFO LogMediator To: > http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , > MessageID: urn:uuid:5191E37439E3958F4479756836588468614536389, Direction: > response, Envelope: <?xml version='1.0' > encoding='utf-8'?><soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body> > <message xmlns:cfl="http://www.harts.com/cfl" > xmlns:fn="http://www.w3.org/2005/02/xpath-functions" counter="1" > inSession="FIX.4.2:OPTMED->BROKER"> > <header> > <field id="8">FIX.4.2</field> > <field id="35">8</field> > <field id="49">OPTMED</field> > <field id="52">20090716-08:37:30.030</field> > <field id="56">BROKER</field> > </header> > <body> > <field id="37" /> > <field id="11" /> > <field id="38">1000</field> > <field id="40">2</field> > <field id="54">1</field> > <field id="55" /> > <field id="59">3</field> > <field id="60">20090716-08:37:30.030</field> > </body> > </message> > </soapenv:Body></soapenv:Envelope> > 2009-07-16 09:37:51,413 [-] [SynapseWorker-2] ERROR Axis2Sender Unexpected > error during sending message out > org.apache.axis2.AxisFault: Unable to find a valid service for the message > at > org.apache.synapse.transport.fix.FIXUtils.getServiceName(FIXUtils.java:655) > at > org.apache.synapse.transport.fix.FIXTransportSender.sendMessage(FIXTransportSender.java:103) > at > org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) > at > org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:190) > at > org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:174) > at > org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) > at > org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:343) > at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:56) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:176) > at > org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:194) > at > org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59) > at > org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:75) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) > at > org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:115) > at > org.apache.synapse.mediators.MediatorWorker.run(MediatorWorker.java:69) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) > at java.lang.Thread.run(Thread.java:595) > 2009-07-16 09:37:51,423 [-] [SynapseWorker-2] WARN EndpointContext > Endpoint : AnonymousEndpoint will be marked SUSPENDED as it failed > > 3. Here is the FIXProxy definition (very similar to Sample 259): > <endpoint name="test-system" > <!-- Must use TCPMon as proxy --> > <address uri="http://localhost:2001/api/v1" format="soap11" /> > </endpoint> > > <proxy name="FIXProxy" transports="fix"> > <target endpoint="test-system" > > <inSequence> > <log level="full" /> > . > . > . > <!-- Translate the message --> > <xslt key="xslt-key-req" /> > <log level="full" /> > > </inSequence> > > <outSequence> > <log level="full" /> > > <sequence key="HandleResponse1" /> > <sequence key="HandleResponse2" /> > > <log level="full" /> > <send /> > > </outSequence> > </target> > > <parameter > name="transport.fix.AcceptorConfigURL">file:repository/conf/OptMed/resources/fix/FIX-OptMed.cfg</parameter> > <parameter name="transport.fix.AcceptorMessageStore">file</parameter> > <parameter name="transport.fix.AcceptorLogFactory">file</parameter> > </proxy> > > 4. Here is the FIX configuration file FIX-OptMed.cfg referenced in the > FIXProxy definition (very similar to default Sample setup): > [default] > FileStorePath=logs/fix/OptMed > FileLogPath=logs/fix/OptMed > ConnectionType=acceptor > StartTime=00:00:00 > EndTime=00:00:00 > HeartBtInt=30 > ValidOrderTypes=1,2,F > SenderCompID=OPTMED > TargetCompID=BROKER > UseDataDictionary=Y > DefaultMarketPrice=12.30 > ResetOnLogon=Y > ResetOnDisconnect=Y > > [session] > BeginString=FIX.4.2 > SocketAcceptPort=9876 > DataDictionary=C:\Apache\Synapse-Snapshot\repository\conf\OptMed\resources\fix\DD-OptMed42.xml > > Thanks again for your help. > Bill > > > Hiranya Jayathilaka-3 wrote: >> >> Hi Bill, >> >> On Thu, Jul 16, 2009 at 6:17 PM, PrgTrdr <[email protected]> wrote: >> >>> >>> After more tracing and analysis I think I understand what is happening >>> but >>> I >>> still need a little help. >>> >>> My synapse.xml configuration includes an inline task whose purpose is to >>> periodically poll the WS for market data messages. When such a message >>> comes in it is received as an "asynchronous response message" and is >>> passed >>> to the Main Sequence. My problem is how to get it passed to the FIX >>> session--either directly through the proxy or indirectly through the >>> Main >>> sequence. >> >> >> I believe what you want to do is to pass the market data messages coming >> from the WS to the FIX acceptor session on which your proxy service is >> listening on. Is that correct? In that case you could address the FIX >> session by giving it an EPR and then use the send mediator to forward >> messages to the FIX session. For an example let's say your FIX session >> has >> following parameters. >> >> BeginString=FIX.4.4 >> SenderCompID=SYNAPSE >> TargetCompID=MyComp >> >> Then we can use the following EPR to address the FIX session: >> >> fix://localhost:9876?BeginString=FIX.4.4&SenderCompID=SYNAPSE&TargetCompID=MyComp >> >> >> Replace the port number (9876) with the actual port number on which your >> FIX >> proxy service is listening on. Now in the main sequence you can use the >> send >> mediator as follows to forward messages to the FIX session. >> >> <send> >> <endpoint> >> <address >> uri="fix://localhost:9876?BeginString=FIX.4.4&SenderCompID=SYNAPSE&TargetCompID=MyComp >> "/> >> </endpoint> >> </send> >> >> Does this achive your goal? >> >> Also please note that the initial FIX transport implementation did not >> support scenarios as complex as this. The enhancements required to run >> this >> scenario was done very recently and hence this will work only on Synapse >> snapshot builds until we get the next release out. On earlier releases >> you >> will get an NPE if you try to do this. >> >> Thanks, >> Hiranya >> >> >> >>> >>> Is there a different way to structure the task definition so Synapse >>> knows >>> to route the response to the FIX proxy? (I saw a couple of Nabble >>> messages >>> about a 'ProxyInjector' mediator but I don't know if that is the answer >>> to >>> this problem (if it exists).) >>> >>> Here's the task definition: >>> <task class="org.apache.synapse.startup.tasks.MessageInjector" >>> name="GetMarketMessages"> >>> <property name="to" value="http://localhost:2001/api/v1"/> >>> <property name="format" value="soap11"/> >>> <property name="soapAction" value=""/> >>> <property name="message"> >>> <GetMarketMessages xmlns="http://www.harts.com/cfl" /> >>> </property> >>> <trigger interval="10"/> >>> </task> >>> >>> Here's the log output: >>> 2009-07-13 14:52:25,409 [-] [HttpClientWorker-15] DEBUG >>> SynapseCallbackReceiver Synapse received an asynchronous response >>> message >>> 2009-07-13 14:52:25,539 [-] [HttpClientWorker-15] DEBUG >>> SynapseCallbackReceiver Received To: null >>> 2009-07-13 14:52:25,609 [-] [HttpClientWorker-15] DEBUG >>> SynapseCallbackReceiver SOAPAction: >>> 2009-07-13 14:52:25,609 [-] [HttpClientWorker-15] DEBUG >>> SynapseCallbackReceiver WSA-Action: >>> 2009-07-13 14:52:25,689 [-] [HttpClientWorker-15] DEBUG >>> SynapseCallbackReceiver Body : >>> <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope >>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soapenv:Body> >>> <cfl:GetMarketMessagesResponse xmlns:cfl="http://www.harts.com/cfl"> >>> <cfl:GetMarketMessagesResponseData >>> sessionID="A29A1D4D85AEF15F46D3229414619591" /> >>> </cfl:GetMarketMessagesResponse> >>> </soapenv:Body></soapenv:Envelope> >>> 2009-07-13 14:52:25,860 [-] [HttpClientWorker-15] DEBUG >>> Axis2SynapseEnvironment Injecting MessageContext >>> 2009-07-13 14:52:25,860 [-] [HttpClientWorker-15] DEBUG >>> Axis2SynapseEnvironment Using Main Sequence for injected message >>> 2009-07-13 14:52:25,920 [-] [HttpClientWorker-15] DEBUG SequenceMediator >>> Start : Sequence <main> >>> 2009-07-13 14:52:25,950 [-] [HttpClientWorker-15] DEBUG SequenceMediator >>> Sequence <SequenceMediator> :: mediate() >>> 2009-07-13 14:52:26,050 [-] [HttpClientWorker-15] DEBUG InMediator Start >>> : >>> In mediator >>> 2009-07-13 14:52:26,050 [-] [HttpClientWorker-15] DEBUG InMediator >>> Current >>> message is a response - skipping child mediators >>> 2009-07-13 14:52:26,080 [-] [HttpClientWorker-15] DEBUG InMediator End : >>> In >>> mediator >>> 2009-07-13 14:52:26,080 [-] [HttpClientWorker-15] DEBUG OutMediator >>> Start : >>> Out mediator >>> 2009-07-13 14:52:26,140 [-] [HttpClientWorker-15] DEBUG OutMediator >>> Current >>> message is outgoing - executing child mediators >>> 2009-07-13 14:52:26,170 [-] [HttpClientWorker-15] DEBUG OutMediator >>> Sequence >>> <OutMediator> :: mediate() >>> 2009-07-13 14:52:26,170 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> Start >>> : Filter mediator >>> 2009-07-13 14:52:26,280 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> XPath >>> expression : >>> boolean(//cfl:LoginResponse/cfl:LoginResponseData/@sessionID) >>> evaluates to false and no else path - skipping child mediators >>> 2009-07-13 14:52:26,350 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> End >>> : >>> Filter mediator >>> 2009-07-13 14:52:26,451 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> Start >>> : Filter mediator >>> 2009-07-13 14:52:26,481 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> XPath >>> expression : boolean(//cfl:GetMarketMessagesResponseData) evaluates to >>> true >>> - executing child mediators >>> 2009-07-13 14:52:26,531 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> Sequence <FilterMediator> :: mediate() >>> . >>> . >>> . >>> 2009-07-13 14:52:26,851 [-] [HttpClientWorker-15] DEBUG FilterMediator >>> End >>> : >>> Filter mediator >>> 2009-07-13 14:52:26,851 [-] [HttpClientWorker-15] DEBUG OutMediator End >>> : >>> Out mediator >>> 2009-07-13 14:52:26,931 [-] [HttpClientWorker-15] DEBUG SequenceMediator >>> End >>> : Sequence <main> >>> >>> Appreciate any help... >>> Thanks, >>> Bill >>> >>> >>> Hiranya Jayathilaka-3 wrote: >>> > >>> > Hi Bill, >>> > >>> > On Thu, Jul 16, 2009 at 2:40 AM, PrgTrdr <[email protected]> wrote: >>> > >>> >> >>> >> I have cloned Sample 259 to implement a use case where a FIX client >>> >> communicates with a Web Service. The system is working well as far >>> as >>> 1) >>> >> establishing the FIX session from the client to Synapse, 2) Logon, >>> >> 3)Sending >>> >> a New Order message, 4)performing an XSLT to create a WS request, >>> >> 5)sending >>> >> the Request to the WS, 6)receiving back a Response from the WS, >>> >> 7)performing >>> >> an XSLT to convert the SOAP response to an XML-encapsulated FIX >>> message. >>> >> But then the response message never flows back to the FIX transport >>> (I >>> >> can >>> >> tell by examining the QuickFIX/J logs). >>> >> >>> >> I am receiving (and converting) the WS Response message in a standard >>> >> "<out>" sequence. At the end I placed >>> >> >>> >> <send> >>> >> <endpoint key="FIXProxy"/> >>> >> </send> >>> >> >>> >> to see if that would make it work, but the message doesn't go out to >>> FIX, >>> >> nor does it show up in the FIXProxy <outSequence> (I put some log >>> >> mediators >>> >> in there to trace activity). >>> >> >>> >> Sample 259 is one-way only (FIX->SOAP). Can someone give me an idea >>> >> about >>> >> what needs to be done to make this two-way? Perhaps changes to the >>> >> FIXProxy >>> >> configuration? >>> > >>> > >>> > How about placing an empty <send/> element in the <outSequence> of >>> your >>> > proxy service? I think that should do the trick. Anyway please send >>> in >>> > your >>> > full Synapse configuration for us to get a clear idea of the scenario. >>> > >>> > Thanks, >>> > Hiranya >>> > >>> > >>> >> >>> >> Thanks, >>> >> Bill >>> >> -- >>> >> View this message in context: >>> >> >>> http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24505424.html >>> >> Sent from the Synapse - User mailing list archive at Nabble.com. >>> >> >>> >> >>> > >>> > >>> > -- >>> > Hiranya Jayathilaka >>> > Software Engineer; >>> > WSO2 Inc.; http://wso2.org >>> > E-mail: [email protected]; Mobile: +94 77 633 3491 >>> > Blog: http://techfeast-hiranya.blogspot.com >>> > >>> > >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24515672.html >>> Sent from the Synapse - User mailing list archive at Nabble.com. >>> >>> >> >> >> -- >> Hiranya Jayathilaka >> Software Engineer; >> WSO2 Inc.; http://wso2.org >> E-mail: [email protected]; Mobile: +94 77 633 3491 >> Blog: http://techfeast-hiranya.blogspot.com >> >> > > -- View this message in context: http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24517652.html Sent from the Synapse - User mailing list archive at Nabble.com.
