google-code-export / quickfix-messenger

Automatically exported from code.google.com/p/quickfix-messenger
1 stars 2 forks source link

Custom Logon settings in cfg are ignored #51

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Windows 2003 Server with newest jawa jre7
1. error in initiator.bat: found "set CLASSPATH=cfg\acceptor"
2. error gui did not show any message send or reveived
3. but this is my main problem:

->try to connect with a custom logon which i configured in the quickfix.cfg. 
you can see in the *.messages.log only the "normal" logon request is send out.
TestMessageIndicator and Password field were not send.
i tried for the value of TestMessageIndicator:
true, True, Y, y, 'y', 'Y'

8=FIX.4.4|9=86|35=A|34=223|49=1027709-EUREX-T-SIMU-027|52=20121127-11:34:03.083|
56=EUREX|98=0|108=30|10=188|

8=FIX.4.4|9=104|35=5|34=5371|49=EUREX|52=20121127-11:34:03.136|56=1027709-EUREX-
T-SIMU-027|58=Environment not specified|10=115|

8=FIX.4.4|9=86|35=A|34=224|49=1027709-EUREX-T-SIMU-027|52=20121127-11:34:08.004|
56=EUREX|98=0|108=30|10=187|

8=FIX.4.4|9=104|35=5|34=5372|49=EUREX|52=20121127-11:34:08.022|56=1027709-EUREX-
T-SIMU-027|58=Environment not specified|10=115|

sideinfo: "58=Environment not specified" will only be received if 
TestMessageIndicator is not send.

-> my quickfix settings
there are only the default settings and this:

[session]
BeginString=FIX.4.4
SocketConnectHost=90.151.253.32
SocketConnectPort=22372
SenderCompID=1027709-EUREX-T-SIMU-027
TargetCompID=EUREX
TestMessageIndicator=true
Password=FixForFes

-> JAVA:
the java is copied into the quickfix-messenger directory

-> INITIATOR.BAT
set CLASSPATH=cfg\initiator
set CLASSPATH=%CLASSPATH%;lib\*
set CLASSPATH=%CLASSPATH%;lib\jaxb-impl.jar
set CLASSPATH=%CLASSPATH%;lib\jaxb-xjc.jar
set CLASSPATH=%CLASSPATH%;lib\jdom.jar
set CLASSPATH=%CLASSPATH%;lib\log4j-1.2.16.jar
set CLASSPATH=%CLASSPATH%;lib\mina-core-1.1.7.jar
set CLASSPATH=%CLASSPATH%;lib\qfix-messenger.jar
set CLASSPATH=%CLASSPATH%;lib\quickfixj-all-1.5.2.jar
set CLASSPATH=%CLASSPATH%;lib\slf4j-api-1.6.1.jar
set CLASSPATH=%CLASSPATH%;lib\slf4j-log4j12-1.6.1.jar
set CLASSPATH=%CLASSPATH%;lib\substance.jar
set CLASSPATH=%CLASSPATH%;lib\trident.jar
.\jre7\bin\javaw -cp %CLASSPATH% com.jramoyo.qfixmessenger.QFixMessenger 
"cfg\initiator\messenger.cfg" "cfg\initiator\quickfix.cfg"

Original issue reported on code.google.com by boris.ga...@arcor.de on 27 Nov 2012 at 11:58

GoogleCodeExporter commented 9 years ago
Thanks -- this is indeed a bug. The application is throwing an error if the 
other custom fields are not present in the config file.

As a workaround, I suggest you add the other custom fields to your config and 
give them empty values (note that RawDataLength must be less than 0):

[session]
BeginString=FIX.4.4
SocketConnectHost=90.151.253.32
SocketConnectPort=22372
SenderCompID=1027709-EUREX-T-SIMU-027
TargetCompID=EUREX
Username=
Password=FixForFes
RawData=
RawDataLength=-1
TestMessageIndicator=true

Original comment by jramoyo on 1 Dec 2012 at 5:55

GoogleCodeExporter commented 9 years ago
Fixed but won't be released until 2.1.

For now, apply the suggested workaround.

Original comment by jramoyo on 1 Dec 2012 at 6:01

GoogleCodeExporter commented 9 years ago
    ok: initiator send the additional fields within [session] as you describe.
not ok:
a) entered additional fields in FIX44.xml in fields
    <field number="1600" name="FIXEngineName" type="STRING"/>
    <field number="1601" name="FIXEngineVersion" type="STRING"/>
    <field number="1602" name="FIXEngineVendor" type="STRING"/>
    <field number="1603" name="ApplicationSystemName" type="STRING"/>
    <field number="1604" name="ApplicationSystemVersion" type="STRING"/>
    <field number="1605" name="ApplicationSystemVendor" type="STRING"/>

b) entered those fields in FIX44.xml in messages: Logon 
   Logon now looks like:

    <message name="Logon" msgtype="A" msgcat="admin">
      <field name="EncryptMethod" required="Y"/>
      <field name="HeartBtInt" required="Y"/>
      <field name="RawDataLength" required="N"/>
      <field name="RawData" required="N"/>
      <field name="ResetSeqNumFlag" required="N"/>
      <field name="NextExpectedMsgSeqNum" required="N"/>
      <field name="MaxMessageSize" required="N"/>
      <group name="NoMsgTypes" required="N">
        <field name="RefMsgType" required="N"/>
        <field name="MsgDirection" required="N"/>
      </group>
      <field name="TestMessageIndicator" required="N"/>
      <field name="Username" required="N"/>
      <field name="Password" required="N"/>
      <field name="FIXEngineName" required="N"/>
      <field name="FIXEngineVersion" required="N"/>
      <field name="FIXEngineVendor" required="N"/>
      <field name="ApplicationSystemName" required="N"/>
      <field name="ApplicationSystemVersion" required="N"/>
      <field name="ApplicationSystemVendor" required="N"/>

c) entered those fields in session for custom login:
[session]
BeginString=FIX.4.4
SocketConnectHost=90.151.253.32
SocketConnectPort=22372
SenderCompID=1027709-EUREX-T-SIMU-027
TargetCompID=EUREX
Username=
Password=SomePassword
RawData=
RawDataLength=-1
TestMessageIndicator=true
FIXEngineName=BobbelFix
FIXEngineVersion=1.0
FIXEngineVendor=gabebor
ApplicationSystemName=BobbelFix
ApplicationSystemVersion=1.0
ApplicationSystemVendor=gabebor

d)EXPECTED:
initiator send within the logon the additional fields
e)RESULT
initiator dont send the additional fields:
request: 
8=FIX.4.4|9=105|35=A|34=99|49=1027709-EUREX-T-SIMU-027|52=20121205-14:54:11.156|
56=EUREX|98=0|108=30|464=Y|554=SomePassword|10=062|

response: 
8=FIX.4.4|9=109|35=5|34=6619|49=EUREX|52=20121205-14:54:11.177|56=1027709-EUREX-
T-SIMU-027|58=Invalid value of FIXEngineName|10=137|

Original comment by boris.ga...@arcor.de on 5 Dec 2012 at 5:09

GoogleCodeExporter commented 9 years ago
Unfortunately, QuickFIX Messenger does not support inserting user-defined 
fields to the logon message.

While it is fairly straight forward to add support for a specific set of fields 
(like the ones above), there is no generic way to support arbitrary fields.

I did a quick search on these fields and it looks like they are part of the 
latest FIX 5.0 SP2 *EP* -- I admit however, that I have no idea what that means 
:-)

If you can provide a bit more information on how common it is for these fields 
to be used in logon messages, then perhaps I can officially add support for 
them.

Otherwise, you'd have to modify the code and add support for them yourself.

Original comment by jramoyo on 6 Dec 2012 at 3:57

GoogleCodeExporter commented 9 years ago
hi,
those fields are not very common today... but will be used much more in future.
within those fields you are able to 
- (dis)allow the access to an exchange (like eurex or xetra do)
- make internal statistics which engine, application is used if errors ocour 
and why
- in fact i should use the following settings to access an exchange:
  FIXEngineName=QuickFIX/J
  FIXEngineVersion=1.5.2
  FIXEngineVendor=jramoyo
  ApplicationSystemName=quickfix-messenger
  ApplicationSystemVersion=2.0
  ApplicationSystemVendor= jramoyo

- EPs ;)
  http://fixprotocol.org/FIXimate3.0/en/FIX.5.0SP2/manifest.html
  and
  http://fixprotocol.org/FIXimate3.0/latestEP/index.html
  you get for field tag 1600 the name FIXEngineName
  which was entered to the specification/repository with EP113 
  from the by the CME which is a FPL Member 

  the "Deutsche Boerse Group" hosting the exchanges EUREX and XETRA.
  and use those fields...  where i try to connect with your application ;-)

hopefully i could clairify a bit? to support fields with 
TAG 1600, 1601, 1602, 1603, 1604, 1605, within Logon

Original comment by boris.ga...@arcor.de on 6 Dec 2012 at 11:33