You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@synapse.apache.org by PrgTrdr <pr...@gmail.com> on 2009/07/16 16:36:56 UTC

More DEBUG output Re: HTTP -> FIX Response Handling

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;amp;SenderCompID=OPTMED&amp;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 <pr...@gmail.com> 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 <pr...@gmail.com> 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: hiranya@wso2.com;  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: hiranya@wso2.com;  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.