You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(13) |
Jun
(21) |
Jul
(14) |
Aug
(29) |
Sep
(39) |
Oct
(47) |
Nov
(70) |
Dec
(27) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(43) |
Feb
(50) |
Mar
(90) |
Apr
(96) |
May
(84) |
Jun
(40) |
Jul
(58) |
Aug
(55) |
Sep
(55) |
Oct
(52) |
Nov
(38) |
Dec
(75) |
| 2008 |
Jan
(49) |
Feb
(72) |
Mar
(49) |
Apr
(55) |
May
(21) |
Jun
(31) |
Jul
(47) |
Aug
(59) |
Sep
(59) |
Oct
(77) |
Nov
(51) |
Dec
(54) |
| 2009 |
Jan
(52) |
Feb
(57) |
Mar
(17) |
Apr
(27) |
May
(44) |
Jun
(46) |
Jul
(69) |
Aug
(38) |
Sep
(39) |
Oct
(45) |
Nov
(38) |
Dec
(37) |
| 2010 |
Jan
(49) |
Feb
(35) |
Mar
(21) |
Apr
(33) |
May
(52) |
Jun
(28) |
Jul
(39) |
Aug
(34) |
Sep
(21) |
Oct
(82) |
Nov
(36) |
Dec
(20) |
| 2011 |
Jan
(28) |
Feb
(64) |
Mar
(93) |
Apr
(75) |
May
(151) |
Jun
(77) |
Jul
(35) |
Aug
(53) |
Sep
(56) |
Oct
(36) |
Nov
(94) |
Dec
(59) |
| 2012 |
Jan
(105) |
Feb
(43) |
Mar
(68) |
Apr
(91) |
May
(45) |
Jun
(18) |
Jul
(103) |
Aug
(77) |
Sep
(45) |
Oct
(59) |
Nov
(58) |
Dec
(43) |
| 2013 |
Jan
(48) |
Feb
(65) |
Mar
(63) |
Apr
(22) |
May
(41) |
Jun
(60) |
Jul
(43) |
Aug
(17) |
Sep
(20) |
Oct
(20) |
Nov
(42) |
Dec
(43) |
| 2014 |
Jan
(54) |
Feb
(34) |
Mar
(34) |
Apr
(20) |
May
(31) |
Jun
(39) |
Jul
(66) |
Aug
(22) |
Sep
(52) |
Oct
(22) |
Nov
(67) |
Dec
(70) |
| 2015 |
Jan
(18) |
Feb
(5) |
Mar
(40) |
Apr
(32) |
May
(62) |
Jun
(28) |
Jul
(86) |
Aug
(44) |
Sep
(61) |
Oct
(65) |
Nov
(8) |
Dec
(19) |
| 2016 |
Jan
(50) |
Feb
(22) |
Mar
(38) |
Apr
(55) |
May
(30) |
Jun
(42) |
Jul
(11) |
Aug
(9) |
Sep
(4) |
Oct
(51) |
Nov
(38) |
Dec
(31) |
| 2017 |
Jan
(40) |
Feb
(40) |
Mar
(23) |
Apr
(35) |
May
(121) |
Jun
(55) |
Jul
(37) |
Aug
(16) |
Sep
(27) |
Oct
(109) |
Nov
(67) |
Dec
(23) |
| 2018 |
Jan
(52) |
Feb
(6) |
Mar
(23) |
Apr
(28) |
May
(32) |
Jun
(20) |
Jul
(20) |
Aug
(22) |
Sep
(8) |
Oct
(33) |
Nov
(32) |
Dec
(13) |
| 2019 |
Jan
(16) |
Feb
(29) |
Mar
(17) |
Apr
(16) |
May
(1) |
Jun
(2) |
Jul
(25) |
Aug
(50) |
Sep
(17) |
Oct
(29) |
Nov
(16) |
Dec
(7) |
| 2020 |
Jan
|
Feb
|
Mar
(29) |
Apr
(64) |
May
(25) |
Jun
(49) |
Jul
(15) |
Aug
(10) |
Sep
(37) |
Oct
(20) |
Nov
(19) |
Dec
(9) |
| 2021 |
Jan
(33) |
Feb
(10) |
Mar
(67) |
Apr
(40) |
May
(70) |
Jun
(33) |
Jul
(14) |
Aug
(10) |
Sep
|
Oct
(7) |
Nov
(6) |
Dec
(16) |
| 2022 |
Jan
(27) |
Feb
(2) |
Mar
(5) |
Apr
(3) |
May
|
Jun
(2) |
Jul
|
Aug
(1) |
Sep
(6) |
Oct
(2) |
Nov
|
Dec
(10) |
| 2023 |
Jan
(1) |
Feb
(2) |
Mar
(21) |
Apr
(3) |
May
(15) |
Jun
(3) |
Jul
(4) |
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
(1) |
| 2024 |
Jan
(7) |
Feb
(2) |
Mar
(8) |
Apr
(11) |
May
(6) |
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
| 2025 |
Jan
(10) |
Feb
(4) |
Mar
(9) |
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Steve B. <st...@te...> - 2007-05-10 00:02:31
|
Are you calling the toXML(DataDictionary) method? The toXML() cannot process repeating groups. > -----Original Message----- > From: qui...@li... [mailto:quickfixj- > use...@li...] On Behalf Of Thomas H=FCgel > Sent: Wednesday, May 09, 2007 10:09 AM > To: qui...@li... > Subject: [Quickfixj-users] Message.toXML does not contain repeating = groups >=20 > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Hello, >=20 > when receiving messages in fromApp callback and calling toString() or > toXML() methods, the repeating groups are not shown. > Looking in the message log i can see the repeating groups. Is this a > bug ?. If not, how can i get the groups using message.toXML() method = ?. >=20 >=20 > Regards > Thomas Huegel >=20 > = -------------------------------------------------------------------------= > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users |
|
From: Anshu N. <ans...@ya...> - 2007-05-09 23:47:40
|
Hi , First login attempt of initiator after StartTime is responded with logout . Subsequent logon work fine . Any idea why does acceptor call logout on first request . I also noticed that logout has the old sequence number . =================== Fix Logs =================== 2007-05-09 21:42:23,686 INFO AnonymousIoService-1-7 FIX.4.3:staging->SalesD: 8=FIX.4.39=15335=A49=SalesD56=staging34=152=20070509-21:42:2398=0108=30553=CalyonFIXTest554=Welcome0210=063 2007-05-09 21:42:23,687 INFO QF/J Session dispatcher: FIX.4.3:staging->SalesD FIX.4.3:staging->SalesD: 8=FIX.4.39=11535=534=21049=staging52=20070509-21:42:23.68756=SalesD10=123 =================== Fix Logs =================== =================== Events Logs =================== 2007-05-09 21:42:23,687 INFO AnonymousIoService-1-7 FIX.4.3:staging->SalesD: Accepting session FIX.4.3:staging->SalesD from /10.10.212.11:15425 2007-05-09 21:42:23,687 INFO AnonymousIoService-1-7 FIX.4.3:staging->SalesD: Acceptor heartbeat set to 30 seconds 2007-05-09 21:42:23,687 INFO QF/J Session dispatcher: FIX.4.3:staging->SalesD FIX.4.3:staging->SalesD: Disconnecting =================== Events Logs =================== I am using Quickfixj 1.0.1 . === Config Params ==== ResetOnDisconnect=N ResetOnLogout=N StartTime=21:30:00 EndTime=21:00:00 Regards, Anshu Narang. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
|
From: <hue...@ya...> - 2007-05-09 14:09:28
|
Hello, when receiving messages in fromApp callback and calling toString() or toXML() methods, the repeating groups are not shown. Looking in the message log i can see the repeating groups. Is this a bug ?. If not, how can i get the groups using message.toXML() method ?. Regards Thomas Huegel |
|
From: Joerg T. <Joe...@ma...> - 2007-05-08 06:57:05
|
On 05/07/07 18:08, Richard Pike wrote:
> I wish to change these logs so they roll on a 24 hour basis. Is it
> possible somebody could send me a sample configuration of how to achieve
> this.
See my previous mail how to use SLF4J. If you choose log4j, you can use the
DailyRollingFileAppender. Just edit the log4j.properties found in your CLASSPATH to contain these lines:
log4j.rootCategory=ALL, Default
log4j.appender.Default=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Default.File=<path of your log file>
log4j.appender.Default.DatePattern=-yyyyMMdd
Note that you can use system properties (e.g. user.home) using the syntax ${user.home}.
Check log4j docs for more details.
Regarding JDK 1.4 java.util.logging, check the docs or ask Tommy, he seems to use that.
Cheers, Jörg
--
Joerg Thoennes
http://www.macd.com Tel.: +49 (0)241 44597-24
Macdonald Associates GmbH Geschäftsführer: Roger Macdonald
Lothringer Str. 52, D-52070 Aachen Amtsgericht Aachen, HRB 8151, Ust.-Id DE813021663
|
|
From: Joerg T. <Joe...@ma...> - 2007-05-08 06:51:05
|
On 05/07/07 17:26, Tommy Hannon wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Steve, > > Pardon me for the "black box" metaphor, I am not used to open source > products and forgot the source code was available. > > So, if I am currently using the 'FileLogPath' setting, I would need > to change and use the following settings... > > SLF4JLogEventCategory > SLF4JLogIncomingMessageCategory > SLF4JLogOutgoingMessageCategory > > Is that correct? Is there any examples to help get me started? Yes, see http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html#Logging for details. Here are the adapter jars for SLF4J in the QF/J 1.1.0 zip file: 6946 04-11-07 02:46 quickfixj/lib/optional/slf4j-log4j12-1.3.0.jar 7612 04-11-07 02:46 quickfixj/lib/slf4j-jdk14-1.3.0.jar All these adapter jars start with slf4j, next comes the destination log format: slf4j-log4j12 maps to log4j 1.2.x compatible logging slf4j-jdk14 maps to the standard java.util.logging introduced with JDK 1.4 Put exactly one of both in your class path and all stuff logged through SLF4J will go to the relevant logging interface. If you choose log4j, the log4j jar has to be in your path. The JDK 1.4 logging is part of your JRE. The core QF/J engine, e.g. the MINA subsystem, uses SLF4J. The event and messages loggers have to set programmatically. The code from http://www.quickfixj.org/quickfixj/usermanual/usage/application.html gets ... LogFactory logFactory = new SLF4JLogFactory(settings); ... Acceptor acceptor = new SocketAcceptor (application, storeFactory, settings, logFactory, messageFactory); This is important. Just changing the settings file does not help. You have to choose the logging factory in your program: LogFactory logFactory = new FileLogFactory(settings); LogFactory logFactory = new ScreenLogFactory(settings); LogFactory logFactory = new SLF4JLogFactory(settings); LogFactory logFactory = new JdbcLogFactory(settings); I would rather like this to be configurable from the settings. Could make a RFE for this. Cheers, Jörg > Thanks - Tommy > > On May 7, 2007, at 9:42 AM, Steve Bate wrote: > >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >>> I am using the 'java.util.logging' package for my own application >>> logging and rolling those okay, so I am somewhat familiar with the >>> type of settings you mention. However, due to my limited knowledge >>> and expertise with Java logging packages, I am not sure how to get at >>> the logging mechanism of the QFJ internals. Is there any >>> documentation and/or examples of how to get at the "black box" >>> loggers that are being used for the "message" and "event" logs? >> Hi Tommy, >> >> I'm not sure what you mean by "black box". The source >> code is available for the entire product. For session-specific >> logging the quickfix.Log implementations are used (SL4JLog, >> FileLog, JdbcLog, ...). For other logging SLF4J is used directly. >> SLF4J has adapter JAR files for both java.util.logging and Log4J >> (among others). >> >> Steve >> >> >> >> ---------------------------------------------------------------------- >> --- >> This SF.net email is sponsored by DB2 Express >> Download DB2 Express C - the FREE version of DB2 express and take >> control of your XML. No limits. Just data. Click to get it now. >> http://sourceforge.net/powerbar/db2/ >> _______________________________________________ >> Quickfixj-users mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfixj-users >> > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > -- Joerg Thoennes http://www.macd.com Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH Geschäftsführer: Roger Macdonald Lothringer Str. 52, D-52070 Aachen Amtsgericht Aachen, HRB 8151, Ust.-Id DE813021663 |
|
From: Richard P. <Ric...@tu...> - 2007-05-07 16:08:44
|
I wish to change these logs so they roll on a 24 hour basis. Is it possible somebody could send me a sample configuration of how to achieve this.=20 --=20 _________________________________________________________ This communication is intended only for the addressee(s) and may contain = confidential information. We do not waive any confidentiality by misdeliv= ery. If you receive this communication in error, any use, dissemination, = printing or copying is strictly prohibited; please destroy all electronic= and paper copies and notify the sender immediately. |
|
From: Tommy H. <th...@bo...> - 2007-05-07 15:26:07
|
Steve, Pardon me for the "black box" metaphor, I am not used to open source products and forgot the source code was available. So, if I am currently using the 'FileLogPath' setting, I would need to change and use the following settings... SLF4JLogEventCategory SLF4JLogIncomingMessageCategory SLF4JLogOutgoingMessageCategory Is that correct? Is there any examples to help get me started? Thanks - Tommy On May 7, 2007, at 9:42 AM, Steve Bate wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ >> I am using the 'java.util.logging' package for my own application >> logging and rolling those okay, so I am somewhat familiar with the >> type of settings you mention. However, due to my limited knowledge >> and expertise with Java logging packages, I am not sure how to get at >> the logging mechanism of the QFJ internals. Is there any >> documentation and/or examples of how to get at the "black box" >> loggers that are being used for the "message" and "event" logs? > > Hi Tommy, > > I'm not sure what you mean by "black box". The source > code is available for the entire product. For session-specific > logging the quickfix.Log implementations are used (SL4JLog, > FileLog, JdbcLog, ...). For other logging SLF4J is used directly. > SLF4J has adapter JAR files for both java.util.logging and Log4J > (among others). > > Steve > > > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > |
|
From: Steve B. <st...@te...> - 2007-05-07 14:43:02
|
> I am using the 'java.util.logging' package for my own application > logging and rolling those okay, so I am somewhat familiar with the > type of settings you mention. However, due to my limited knowledge > and expertise with Java logging packages, I am not sure how to get at > the logging mechanism of the QFJ internals. Is there any > documentation and/or examples of how to get at the "black box" > loggers that are being used for the "message" and "event" logs? Hi Tommy, I'm not sure what you mean by "black box". The source code is available for the entire product. For session-specific logging the quickfix.Log implementations are used (SL4JLog, FileLog, JdbcLog, ...). For other logging SLF4J is used directly. SLF4J has adapter JAR files for both java.util.logging and Log4J (among others). Steve |
|
From: Tommy H. <th...@bo...> - 2007-05-07 14:29:29
|
Steve, I am using the 'java.util.logging' package for my own application logging and rolling those okay, so I am somewhat familiar with the type of settings you mention. However, due to my limited knowledge and expertise with Java logging packages, I am not sure how to get at the logging mechanism of the QFJ internals. Is there any documentation and/or examples of how to get at the "black box" loggers that are being used for the "message" and "event" logs? Thank you - Tommy On May 6, 2007, at 7:34 AM, Steve Bate wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Hi Tommy, > > I'd recommend using the SLF4JLogFactory with Log4J. The Log4J > framework has many advanced capabilities like rolling log > files. > > Steve > >> Is there any way to "roll" the message and event log files on-the- >> fly? Some of my sessions are creating rather large files. I looked >> in the User Manual and the QFJ Wiki, but did not find anything. > > > > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > |
|
From: t.s. <tru...@cb...> - 2007-05-07 05:27:43
|
>> 4. On "setting up your project", the documentation said something about
>> "create a static initializer on your class, adding the line
>> System.loadLibrary("quickfix_jni") in order to load the appropriate
>> quickfix dll or shared object".
> Where did you find this documentation? This seems to be part of the Java API of the native QuickFIX
> engine. The QuickFIX/J engine is pure Java and the docs should not contain any System.loadLibrary()
> calls. Otherwise, this is a documentation bug.
Ah, My bad, sorry....
I got mixed up with the quickfix documentation at
http://www.quickfixengine.org/quickfix/doc/html/project.html
since they have a 'java' section too.
Thank you all for the very informative answers,
I'll dig around on the example applications first.
Wish me luck :)
Regards,
t.s.
|
|
From: Tirthankarg <Tir...@sy...> - 2007-05-07 02:15:38
|
Please ignore my last email. I got the problem in my code. I was not =
using
the correct datadictionary.
=20
Thanks and regards
=20
-----Original Message-----
From: Tirthankarg [mailto:Tir...@sy...]=20
Sent: Monday, May 07, 2007 7:10 AM
To: 'qui...@li...'
Subject: Need help in building an E message
=20
Hi,
=20
I am trying to build and E message using quickfix NewOrderList (in FIX =
4.4)
. My idea was to create the E message using NewOrderList and then
reconverting it to a string and trying to recreate a Message object from =
the
string, for the sake of cross-verification. It seems if I create a
NewOrderList with a single order in the group it works while if I try 2
orders, it gives me a body length mismatch error, when I try to create =
the
Message object. Can someone please help me in spotting what is wrong in =
the
way I am using NewOrderList.
=20
The code snippet is as under:
=20
NewOrderList newOrderList=3Dnew NewOrderList();
NewOrderList.NoOrders NOLOrders=3Dnew NewOrderList.NoOrders();
=20
newOrderList.set(new ListID("Test125"));
newOrderList.set(new BidType(3));
newOrderList.set(new TotNoOrders(2));
StringField sf2 =3Dnew StringField(5551);
sf2.setValue("Test_Portfolio23:30:60:60");
newOrderList.setField(sf2);
sf2 =3Dnew StringField(5552);
sf2.setValue("1");
newOrderList.setField(sf2);
=20
=20
//// adding the first order =20
NOLOrders.set(new ClOrdID("321"));
NOLOrders.set(new ListSeqNo(1));
NOLOrders.set(new Symbol("MJSFT"));
NOLOrders.set(new Side(Side.BUY));
NOLOrders.set(new OrderQty(30));
newOrderList.addGroup(NOLOrders);
=20
// adding a second order
NOLOrders.set(new ClOrdID("221"));
NOLOrders.set(new ListSeqNo(2));
NOLOrders.set(new Symbol("IBM"));
NOLOrders.set(new Side(Side.BUY));
NOLOrders.set(new OrderQty(30));
=20
newOrderList.addGroup(NOLOrders);=20
=20
DataDictionary dd =3D new DataDictionary("FIX44.xml");
Message m =3D new Message(newOrderList.toString());
|
|
From: Tirthankarg <Tir...@sy...> - 2007-05-07 01:41:41
|
Hi,
=20
I am trying to build and E message using quickfix NewOrderList (in FIX =
4.4)
. My idea was to create the E message using NewOrderList and then
reconverting it to a string and trying to recreate a Message object from =
the
string, for the sake of cross-verification. It seems if I create a
NewOrderList with a single order in the group it works while if I try 2
orders, it gives me a body length mismatch error, when I try to create =
the
Message object. Can someone please help me in spotting what is wrong in =
the
way I am using NewOrderList.
=20
The code snippet is as under:
=20
NewOrderList newOrderList=3Dnew NewOrderList();
NewOrderList.NoOrders NOLOrders=3Dnew NewOrderList.NoOrders();
=20
newOrderList.set(new ListID("Test125"));
newOrderList.set(new BidType(3));
newOrderList.set(new TotNoOrders(2));
StringField sf2 =3Dnew StringField(5551);
sf2.setValue("Test_Portfolio23:30:60:60");
newOrderList.setField(sf2);
sf2 =3Dnew StringField(5552);
sf2.setValue("1");
newOrderList.setField(sf2);
=20
=20
//// adding the first order =20
NOLOrders.set(new ClOrdID("321"));
NOLOrders.set(new ListSeqNo(1));
NOLOrders.set(new Symbol("MJSFT"));
NOLOrders.set(new Side(Side.BUY));
NOLOrders.set(new OrderQty(30));
newOrderList.addGroup(NOLOrders);
=20
// adding a second order
NOLOrders.set(new ClOrdID("221"));
NOLOrders.set(new ListSeqNo(2));
NOLOrders.set(new Symbol("IBM"));
NOLOrders.set(new Side(Side.BUY));
NOLOrders.set(new OrderQty(30));
=20
newOrderList.addGroup(NOLOrders);=20
=20
DataDictionary dd =3D new DataDictionary("FIX44.xml");
Message m =3D new Message(newOrderList.toString());
|
|
From: Steve B. <st...@te...> - 2007-05-06 12:34:56
|
Hi Tommy, I'd recommend using the SLF4JLogFactory with Log4J. The Log4J framework has many advanced capabilities like rolling log files. Steve > Is there any way to "roll" the message and event log files on-the- > fly? Some of my sessions are creating rather large files. I looked > in the User Manual and the QFJ Wiki, but did not find anything. |
|
From: Steve B. <st...@te...> - 2007-05-04 15:35:10
|
> Why does quickfix.Session.next() need to be synchronized? It looks like > the synchronization in Session has been overdone. There maybe some code > in next() that should be synchronized, but definitely not all of it. Hi Chris, I'm open to doing lower level synchronization in next(). One potential issue is performance of increased lock acquisitions and release activity, but later versions of the Java JVM have reportedly optimized this behavior quite a bit. Lower level synchronization would also be more prone to thread safety bugs. That could be handled to some extent with a specialized test suite for that purpose. To solve your problem we'd have to not only do the locking at a lower level but also have separate mutexes for inbound and outbound messages. Feel free to add an RFE for this. Steve |
|
From: Joerg T. <Joe...@ma...> - 2007-05-04 07:46:37
|
On 05/03/07 12:54, t.s. wrote:
> 4. On "setting up your project", the documentation said something about
> "create a static initializer on your class, adding the line
> System.loadLibrary("quickfix_jni") in order to load the appropriate
> quickfix dll or shared object".
Where did you find this documentation? This seems to be part of the Java API of the native QuickFIX
engine. The QuickFIX/J engine is pure Java and the docs should not contain any System.loadLibrary()
calls. Otherwise, this is a documentation bug.
Cheers, Jörg
--
Joerg Thoennes
http://www.macd.com Tel.: +49 (0)241 44597-24
Macdonald Associates GmbH Geschäftsführer: Roger Macdonald
Lothringer Str. 52, D-52070 Aachen Amtsgericht Aachen, HRB 8151, Ust.-Id DE813021663
|
|
From: Tommy H. <th...@bo...> - 2007-05-03 20:10:58
|
Is there any way to "roll" the message and event log files on-the- fly? Some of my sessions are creating rather large files. I looked in the User Manual and the QFJ Wiki, but did not find anything. |
|
From: Toli K. <to...@ma...> - 2007-05-03 19:15:10
|
Tommy, > I have not set the "ValidateUserDefinedFields" setting and the > default in the user guide shows "N". > This may be a bug in documentation. I checked the DataDictionary code, and by default the checkUserDefinedFields flag is "true", and i couldn't see where the value was modified in default settings. So try explicitly setting the ValidateUserDefinedFields=N, and if that fixes your problem then file a doc bug. -- Toli Kuznets http://www.marketcetera.com: Open-Source Trading Platform download.run.trade. |
|
From: Tommy H. <Tom...@Bo...> - 2007-05-03 17:14:42
|
I am seeing rejections in one of our session event logs... 20070503-16:47:41: Message 1441 Rejected: Invalid tag number:50044 20070503-17:03:46: Message 1494 Rejected: Invalid tag number:50134 I have not set the "ValidateUserDefinedFields" setting and the default in the user guide shows "N". This seems to be irreconcilable. Am I doing (or not) something wrong or is there a bug? - Tommy |
|
From: Tommy H. <Tom...@Bo...> - 2007-05-03 16:47:02
|
TS, There is a QuickFix/J user guide helps you get started that some sample code. The QuickFix/J download has a few sample applications. I would not suggest "rolling your own" network communications. The combined packages accomplish all of this for you. I would suggest configuring a session in the "settings" file. However, you may code session handling yourself if more control is desired. The heartbeats are handled under-the-hood and are configurable. You may disable persisting messages (although not recommended). Another option from the database would be to simply use flat file storage. Although not obvious from the documentation, all you need to do is set the "FileStorePath" and "FileLogPath" in the settings file to accomplish this. I will abstain from #4 as I run on Mac and Solaris platform only. Hope this helps. Good luck! - Tommy On May 3, 2007, at 5:54 AM, t.s. wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Hello everyone, > > I'm a complete beginner in QuickFIX/J and the FIX protocol in general. > Right now i'm having a hard time getting started, so any > pointers/suggestions will be very much appreciated. > > At this point, i'm trying to write a proof-of-concept FIX client that > connects to a server, and get quotes data periodically. As far as i > can > tell, here's what i need to do : > 1. start a FIX session. > 2. send a quote request. > 3. receive quotes from server. > 4. handle housekeeping stuffs... > - heartbeat ?? > - other messages ?? > 5. disconnect when done. > > To that end, i have several questions... > 1. Is there a QuickFIX/J getting started guide ? I need a sample code > showing how to start/stop a session, and i couldn't find anything... > > 2. Is the above usage scenario suitable for use with QuickFIX/J ? > (as opposed to rolling-my-own low-level tcp/ip handling) > > 3. Do i have to use a database for this scenario ? There were several > chapters on the online docs that describes setting up the database, > but > what if i don't need a database? Can i just use QuickFIX/J as an API ? > > 4. On "setting up your project", the documentation said something > about > "create a static initializer on your class, adding the line > System.loadLibrary("quickfix_jni") in order to load the appropriate > quickfix dll or shared object". > What does this bit do? What is a quickfix dll? I can't seem to > find any > .dll or .jni files anywhere on my \quickfixj folder. Or am i missing > something here? > > > That's all for now. Thank you very much in advance, > best regards, > ts. > > > > > > > > > > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > |
|
From: Toli K. <to...@ma...> - 2007-05-03 16:40:32
|
Hey. Welcome to Quickfix/J. I hope that you find it easy to use. > To that end, i have several questions... > 1. Is there a QuickFIX/J getting started guide ? I need a sample code > showing how to start/stop a session, and i couldn't find anything... In case you haven't seen it yet, take a look at http://www.quickfixj.org/quickfixj/usermanual/? The binary distribution comes with a few sample applications (banzai, executor), but you are probably better off checking out the code from SVN and looking at the code of these examples to see how things are setup. > 2. Is the above usage scenario suitable for use with QuickFIX/J ? > (as opposed to rolling-my-own low-level tcp/ip handling) Absolutely. That's essentially what we use it for, and that's why it was written. don't roll your own low-leve stuff. > 3. Do i have to use a database for this scenario ? There were several > chapters on the online docs that describes setting up the database, but > what if i don't need a database? Can i just use QuickFIX/J as an API ? You don't need to use the database at all. The DB is available as a logging store - you can store all the traffic (incoming/outgoing messages) in the DB but that's not necessary; and you can store the session info in DB but it's not necessary either. I think all the examples are setup to use FileStore which stores session info on disk, and you can use either the ScreenLog or the Slf4jLog, it's a lot simpler. > 4. On "setting up your project", the documentation said something about > "create a static initializer on your class, adding the line > System.loadLibrary("quickfix_jni") in order to load the appropriate > quickfix dll or shared object". > What does this bit do? What is a quickfix dll? I can't seem to find any > .dll or .jni files anywhere on my \quickfixj folder. Or am i missing > something here? this depends on what platform you run your code on. DLLs are for Windows machines. QFJ is 100% java, there's no native component, so you don't really need to load any JNI stuff. It is compatible with Quickfix (c++) JNI wrapper but if you are doing your stuff in Java then no need to do any JNI stuff. <disclaimer: obligatory plug> If you need more examples, feel free to check out the code for our OMS, it's posted at http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/ We use Spring for configuring all of QuickfixJ, but essentially it's the same setup. for your task, you need to create a QuickfixApplication, create a session and send a quote request. you'll handle the callback in the "fromApp" function in the qfApplication. QFJ handles all the logon/disconnect and heartbeats itself, if you setup the session correctly. happy coding. -- Toli Kuznets http://www.marketcetera.com: Open-Source Trading Platform download.run.trade. |
|
From: Robert B. <rbr...@me...> - 2007-05-03 15:55:21
|
J=F6rg, We are using an Oracle 10.2.0.3 in RAC configuration on a RedHat Enterprise= Linux 4 with update 4 server. I'm using the latest ojdbc.jar file to come= with this Oracle installation to connect to this system from my Windows XP= Professional box running the class directly from my Eclipse 3.2 IDE. To further illustrate my conundrum...I tested individual sessions I have se= t up with various vendors...all of my initial testing of the JDBC logging/s= toring had, thus far, been with Neovest, whose development connection I've = been testing with for a few weeks now has been very dependable and trouble-= free...turns out, the day I started testing QuickFIX/j's JDBC logging, Neov= est's test connection was acting up and has been for a few days now...my en= gine would send a logon request and they would immediately reply with a log= out message and the engine would logout...in the midst of all of this, entr= ies would be inserted into the Oracle tables via the logging, but I would c= ontinue to get the recursive errors.=20=20 I switched to mySQL and attempted to connect to the bad connection with Neo= vest and the engine would attempt to login, get the logout response and log= off and then retry again in 30 seconds...no recursive errors and all conne= ction/session creation attempts were logged to mySQL. Seemed the oracle im= plementation of the proxool libraries didn't like the fact that the connect= ion was sending an incorrect response to my logon request I guess. At any rate, I changed my test session to connect to FutureTrade and I have= now been successfully able to connect to Oracle using JDBC logging/store w= ithout any recursive errors! A little disconcerting that a problematic con= nection results in a recursive connection error but hopefully, in productio= n over our dedicated lines we are getting installed, the connections to our= vendors will be mostly trouble-free *na=EFve fingers crossed*...I guess we= 'll just have to watch this. I'll keep you posted as I continue to monitor this. Also to answer your lo= gging/store question, my config file has the jdbcurl, driver, username and = password and my initiator is successfully using both the JdbcLogFactory and= JdbcStoreFactory utilities connected to Oracle now with my valid test conn= ection to FutureTrade...still trouble with the invalid Neovest connection. Thanks so much for your patience and help with all of this... Gratefully, Rob Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single S= trategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007 From: qui...@li... [mailto:quickfixj-users= -bo...@li...] On Behalf Of Joerg Thoennes Sent: Thursday, May 03, 2007 7:10 AM To: qui...@li... Subject: Re: [Quickfixj-users] jdbc logging QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ QuickFIX/J Support: http://www.quickfixj.org/support/ Hi Robert, just to recollect: JdbcLogging with QF/J 1.1.0 to Oracle does not work. But does the JdbcStoreFactory work? Which Oracle version do you use and which version of the Oracle JDBC driver? Steve, shall we open a JIRA issue for this? The thread is getting really lo= ng now... Thanks, J=F6rg On 05/02/07 20:49, Robert Brueckmann wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > No worries, Toli!=20=20 >=20 > Thank you so much for the time you spent on that reply...the minute I > have a free...uh...minute, I will batten down the hatches and get behind > what's going on here. I have a sneaking suspicion the Proxool libraries > are the culprit in conjunction with Oracle....hopefully I'll be able to > tell you soon. >=20 > This definitely was not working with 1.0.3...and I migrated to 1.1.0 in > the hopes that it was fixed. I have been meaning to install mysql on my > machine and attempt to connect to that and see what happens...this email > is the kick in the butt I needed. >=20 > Thanks again for all your help and detailed reply...much appreciated > beyond belief! >=20 > Rob >=20 >=20 >=20 > Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single= Strategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007 >=20 >=20 > From: qui...@li... > [mailto:qui...@li...] On Behalf Of Toli > Kuznets > Sent: Wednesday, May 02, 2007 2:37 PM > To: qui...@li... > Subject: Re: [Quickfixj-users] jdbc logging >=20 > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Robert, >=20 > When i said that the JdbcLog was "fixed", I meant that it stopped > going into the recursive death spiral of printing stacktraces, so that > you get this instead: >> JdbcLog cannot log SQLException due to recursive log errors! >=20 > Truth be told, i'm at a loss what your problem may be. i'm not seeing > anything useful in the log. I saw that kind of exception when the QFJ > engine couldn't make the connection to the database: it was either not > running, the tables were not present, the user/password was incorrect, > it didn't have perms to write, etc. In that case, the underlying > proxool cashing code would go crazy, trying to keep creating > connections. But it doesn't look like that's the case with you. >=20 > I haven't tried QFJ with Oracle - we don't have it in-house, we use > MySQL. > I can't remember if you said that it worked for you with 1.0.3, or if > it was the other problem (app exiting w/out an explicit wait() call). >=20 > There are 3 approaches i can suggest: > 1. Try something other than Oracle - maybe MySQL. it's fairly easy to > setup, and you can see if it's an Oracle or a general Jdbc problem you > have. >=20 > 2. The error comes from Proxool - which is a transparent JDBC pooling > framework. If you feel comfortable modifying QFJ, you can check out > the source and try to disable Proxool altogether, but changing the > quickfix.JdbcUtil.getDataSource() function not create a Proxool pool. > Perhaps that'll give you a better error that somehow gets masked by > Proxool. >=20 > 3. Another thing i may suggest for debugging is for you to download > our Marketcetera OMS and configure it to point to your Oracle database > and see if you get the same problem. > If you don't, then you can perhaps isolate the problem to your app > setup. Otherwise, we are much more likely seeing a bug in QFJ itself, > and then I can work on getting an Oracle setup and trying to reproduce > your setup. > http://trac.marketcetera.org/trac.fcgi/wiki/Marketcetera/OMSInstallation > I'd be happy to walk you through the Marketcetera setup to save you > time if you want. Just let me know. >=20 > I realize that all of these suggestions are a lot of work and may be > asking too much. If you can isolate the error to QuickfixJ. then you > can post the SQL create scripts for Oracle database, and we'll try to > reproduce the problem locally. >=20 --=20 Joerg Thoennes http://www.macd.com Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH Gesch=E4ftsf=FChrer: Roger Macdonald Lothringer Str. 52, D-52070 Aachen Amtsgericht Aachen, HRB 8151, Ust.-Id D= E813021663 ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Quickfixj-users mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfixj-users =20 -------------------------------------------------------- This message contains information from Merlin Securities, LLC, or from one = of its affiliates, that may be confidential and privileged. If you are not = an intended recipient, please refrain from any disclosure, copying, distrib= ution or use of this information and note that such actions are prohibited.= If you have received this transmission in error, please notify the sender = immediately by telephone or by replying to this transmission. =20 Merlin Securities, LLC is a registered broker-dealer. Services offered thro= ugh Merlin Securities, LLC are not insured by the FDIC or any other Federal= Government Agency, are not deposits of or guaranteed by Merlin Securities,= LLC and may lose value. Nothing in this communication shall constitute a s= olicitation or recommendation to buy or sell a particular security. |
|
From: Joerg T. <Joe...@ma...> - 2007-05-03 11:22:37
|
Hi Chris, On 05/02/07 23:39, Chris Audley wrote: > Excellent suggestion Steve, the issue is a thread deadlock. Yes, very classical example: 1 locks A, tries to lock B; 2 locks B and tries to lock A. I would try to decouple A and B by some sort of concurrent queue. I.e. the fromApp() callback just puts the receive message into the queue and another threads picks messages from the queue and sends them to the other session. > In the traces below, the session 'BEACONFIX->front-server-200-38' is the > router forwarding a response message to the process that is submitting > the 500 QuoteRequests. The session > 'exchange-server-200-8->exchange-server200' is the recipient of the > QuoteRequest messages. The deadlock occurs when the router is > processing a QuoteRequest and a response to a QuoteRequest at the same > time. > > In more abstract terms, the router is bridging between sessions A and B. > Message 1 is received from A to forward to B at the same time Message 2 > is received from B to forward to A. QuickFIX/J holds the session lock > while processing an incoming message, so the dispatcher for Message 1 > holds a lock on A and the dispatcher for Message 2 holds a lock on B. > Each message wants to be sent to the other session, so dispatcher > Message 1 is waiting for the lock on B and dispatcher Message 2 is > waiting for the lock on A. > > Why does quickfix.Session.next() need to be synchronized? It looks like > the synchronization in Session has been overdone. There maybe some code > in next() that should be synchronized, but definitely not all of it. OK, you could open an enhancement request to reduce amount of synchronized code in QF/J. Possibly, the amount of synchronization could be reduced, but I am not sure. Cheers, Jörg > Found one Java-level deadlock: > ============================= > "QF/J Session dispatcher: FIX.4.4:BEACONFIX->front-server-200-38": > waiting to lock monitor 0x080ece3c (object 0xe399f1e8, a > quickfix.Session), > which is held by "QF/J Session dispatcher: > FIX.4.4:exchange-server-200-8->exchange-server200" > "QF/J Session dispatcher: > FIX.4.4:exchange-server-200-8->exchange-server200": > waiting to lock monitor 0x080eccbc (object 0xe329fbb8, a > quickfix.Session), > which is held by "QF/J Session dispatcher: > FIX.4.4:BEACONFIX->front-server-200-38" > > Java stack information for the threads listed above: > =================================================== > "QF/J Session dispatcher: FIX.4.4:BEACONFIX->front-server-200-38": > at quickfix.Session.send(Session.java:1616) > - waiting to lock <0xe399f1e8> (a quickfix.Session) > at quickfix.Session.sendToTarget(Session.java:423) > at > headend.quickfix.DefaultMessageSender.send(DefaultMessageSender.java:43) > at > headend.quickfix.DefaultMessageSender.send(DefaultMessageSender.java:63) > at > headend.quickfix.DefaultMessageSender.sendToAll(DefaultMessageSender.jav > a:97) > at > headend.quickfix.AbstractMessageSender.sendToAll(AbstractMessageSender.j > ava:27) > at > headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH > andler.java:42) > at > headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH > andler.java:37) > at > headend.quickfix.RouteMessageHandler.handleMessage(RouteMessageHandler.j > ava:64) > at > headend.quickfix.AbstractFixListener.processMessage(AbstractFixListener. > java:59) > at > headend.quickfix.AbstractFixListener.incomingRouteMessage(AbstractFixLis > tener.java:119) > at > headend.quickfix.AppService.incomingRouteMessage(AppService.java:79) > at headend.quickfix.AppService.toRoute(AppService.java:85) > at > headend.quickfix.RouteMessageHandler.sendMessage(RouteMessageHandler.jav > a:53) > at > headend.clientportal.ClientPortalAgent$RouteTradingMessageHandler.sendMe > ssage(ClientPortalAgent.java:160) > at > headend.quickfix.RouteMessageHandler.handleMessage(RouteMessageHandler.j > ava:64) > at > headend.quickfix.AbstractFixListener.processMessage(AbstractFixListener. > java:59) > at > headend.quickfix.AbstractFixListener.incomingMessage(AbstractFixListener > .java:98) > at > headend.quickfix.AppService.incomingMessage(AppService.java:69) > at > headend.quickfix.BasicApplication.fromApp(BasicApplication.java:125) > at > headend.quickfix.QuickfixApplication.fromApp(QuickfixApplication.java:86 > ) > at quickfix.Session.fromCallback(Session.java:1189) > at quickfix.Session.verify(Session.java:1143) > at quickfix.Session.verify(Session.java:1218) > at quickfix.Session.next(Session.java:670) > - locked <0xe329fbb8> (a quickfix.Session) > at > quickfix.mina.ThreadPerSessionEventHandlingStrategy$MessageDispatchingTh > read.run(ThreadPerSessionEventHandlingStrategy.java:75) > "QF/J Session dispatcher: > FIX.4.4:exchange-server-200-8->exchange-server200": > at quickfix.Session.isEnabled(Session.java:489) > - waiting to lock <0xe329fbb8> (a quickfix.Session) > at > headend.quickfix.DefaultMessageSender.send(DefaultMessageSender.java:40) > at > headend.quickfix.AbstractMessageSender.send(AbstractMessageSender.java:2 > 3) > at > headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH > andler.java:44) > at > headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH > andler.java:37) > at > headend.quickfix.RouteMessageHandler.handleMessage(RouteMessageHandler.j > ava:64) > at > headend.quickfix.AbstractFixListener.processMessage(AbstractFixListener. > java:59) > at > headend.quickfix.AbstractFixListener.incomingMessage(AbstractFixListener > .java:98) > at > headend.quickfix.AppService.incomingMessage(AppService.java:69) > at > headend.quickfix.BasicApplication.fromApp(BasicApplication.java:125) > at > headend.quickfix.QuickfixApplication.fromApp(QuickfixApplication.java:86 > ) > at quickfix.Session.fromCallback(Session.java:1189) > at quickfix.Session.verify(Session.java:1143) > at quickfix.Session.verify(Session.java:1218) > at quickfix.Session.next(Session.java:670) > - locked <0xe399f1e8> (a quickfix.Session) > at > quickfix.mina.ThreadPerSessionEventHandlingStrategy$MessageDispatchingTh > read.run(ThreadPerSessionEventHandlingStrategy.java:75) > > -----Original Message----- > From: qui...@li... > [mailto:qui...@li...] On Behalf Of > Steve Bate > Sent: Wednesday, May 02, 2007 3:46 PM > To: qui...@li... > Subject: Re: [Quickfixj-users] QuickFIX/J seizes up under load > > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ Hi Chris, > > Have you looked at a Java thread dump to see if there are any clues > there? > > Steve > >> -----Original Message----- >> From: qui...@li... >> [mailto:qui...@li...]On Behalf Of >> Chris Audley >> Sent: Wednesday, May 02, 2007 3:14 PM >> To: qui...@li... >> Subject: [Quickfixj-users] QuickFIX/J seizes up under load >> >> >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >> >> I have a FIX based system that was developed on QuickFIX/C++ with Java > >> bindings. I'm interested in using QuickFIX/J for a number of reasons, > >> but I've had problems with it that I don't have with the native >> Quickfix. >> >> The most severe problem I have is with QuickFIX/J locking up during >> heavy loads. I have a reproducible case where the client program >> tries to send nearly 500 QuoteRequest messages through a FIX router, >> both running QuickFIX. With native QuickFIX, the test runs without a >> hitch, however with QuickFIX/J it will fail every time. Anywhere >> between 10 to 60 messages will get through successfully but then the >> FIX router just stops. >> >> There is no indication of an error in any logs, I've been specifically > >> looking for any logging that may have come from >> AbstractIoHandler.exceptionCaught(). >> >> Once this error has occurred, no FIX traffic will go through the >> connection between the client and the router. The socket is still >> open, but the router doesn't seem to recognize it. Eventually the >> client will report the session is closed because the heart beat and >> TEST messages are missing. >> >> Without any indications of a problem in the logs, I don't know where >> to begin looking for a solution. Does anyone have an idea what could >> be causing this behavior? >> >> Thanks >> Chris >> >> ---------------------------------------------------------------------- >> --- This SF.net email is sponsored by DB2 Express Download DB2 Express > >> C - the FREE version of DB2 express and take control of your XML. No >> limits. Just data. Click to get it now. >> http://sourceforge.net/powerbar/db2/ >> _______________________________________________ >> Quickfixj-users mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfixj-users >> > > ------------------------------------------------------------------------ > - > This SF.net email is sponsored by DB2 Express Download DB2 Express C - > the FREE version of DB2 express and take control of your XML. No limits. > Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > -- Joerg Thoennes http://www.macd.com Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH Geschäftsführer: Roger Macdonald Lothringer Str. 52, D-52070 Aachen Amtsgericht Aachen, HRB 8151, Ust.-Id DE813021663 |
|
From: Joerg T. <Joe...@ma...> - 2007-05-03 11:10:04
|
Hi Robert, just to recollect: JdbcLogging with QF/J 1.1.0 to Oracle does not work. But does the JdbcStoreFactory work? Which Oracle version do you use and which version of the Oracle JDBC driver? Steve, shall we open a JIRA issue for this? The thread is getting really long now... Thanks, Jörg On 05/02/07 20:49, Robert Brueckmann wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > No worries, Toli! > > Thank you so much for the time you spent on that reply...the minute I > have a free...uh...minute, I will batten down the hatches and get behind > what's going on here. I have a sneaking suspicion the Proxool libraries > are the culprit in conjunction with Oracle....hopefully I'll be able to > tell you soon. > > This definitely was not working with 1.0.3...and I migrated to 1.1.0 in > the hopes that it was fixed. I have been meaning to install mysql on my > machine and attempt to connect to that and see what happens...this email > is the kick in the butt I needed. > > Thanks again for all your help and detailed reply...much appreciated > beyond belief! > > Rob > > > > Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single Strategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007 > > > From: qui...@li... > [mailto:qui...@li...] On Behalf Of Toli > Kuznets > Sent: Wednesday, May 02, 2007 2:37 PM > To: qui...@li... > Subject: Re: [Quickfixj-users] jdbc logging > > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Robert, > > When i said that the JdbcLog was "fixed", I meant that it stopped > going into the recursive death spiral of printing stacktraces, so that > you get this instead: >> JdbcLog cannot log SQLException due to recursive log errors! > > Truth be told, i'm at a loss what your problem may be. i'm not seeing > anything useful in the log. I saw that kind of exception when the QFJ > engine couldn't make the connection to the database: it was either not > running, the tables were not present, the user/password was incorrect, > it didn't have perms to write, etc. In that case, the underlying > proxool cashing code would go crazy, trying to keep creating > connections. But it doesn't look like that's the case with you. > > I haven't tried QFJ with Oracle - we don't have it in-house, we use > MySQL. > I can't remember if you said that it worked for you with 1.0.3, or if > it was the other problem (app exiting w/out an explicit wait() call). > > There are 3 approaches i can suggest: > 1. Try something other than Oracle - maybe MySQL. it's fairly easy to > setup, and you can see if it's an Oracle or a general Jdbc problem you > have. > > 2. The error comes from Proxool - which is a transparent JDBC pooling > framework. If you feel comfortable modifying QFJ, you can check out > the source and try to disable Proxool altogether, but changing the > quickfix.JdbcUtil.getDataSource() function not create a Proxool pool. > Perhaps that'll give you a better error that somehow gets masked by > Proxool. > > 3. Another thing i may suggest for debugging is for you to download > our Marketcetera OMS and configure it to point to your Oracle database > and see if you get the same problem. > If you don't, then you can perhaps isolate the problem to your app > setup. Otherwise, we are much more likely seeing a bug in QFJ itself, > and then I can work on getting an Oracle setup and trying to reproduce > your setup. > http://trac.marketcetera.org/trac.fcgi/wiki/Marketcetera/OMSInstallation > I'd be happy to walk you through the Marketcetera setup to save you > time if you want. Just let me know. > > I realize that all of these suggestions are a lot of work and may be > asking too much. If you can isolate the error to QuickfixJ. then you > can post the SQL create scripts for Oracle database, and we'll try to > reproduce the problem locally. > -- Joerg Thoennes http://www.macd.com Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH Geschäftsführer: Roger Macdonald Lothringer Str. 52, D-52070 Aachen Amtsgericht Aachen, HRB 8151, Ust.-Id DE813021663 |
|
From: t.s. <tru...@cb...> - 2007-05-03 10:55:47
|
Hello everyone,
I'm a complete beginner in QuickFIX/J and the FIX protocol in general.
Right now i'm having a hard time getting started, so any
pointers/suggestions will be very much appreciated.
At this point, i'm trying to write a proof-of-concept FIX client that
connects to a server, and get quotes data periodically. As far as i can
tell, here's what i need to do :
1. start a FIX session.
2. send a quote request.
3. receive quotes from server.
4. handle housekeeping stuffs...
- heartbeat ??
- other messages ??
5. disconnect when done.
To that end, i have several questions...
1. Is there a QuickFIX/J getting started guide ? I need a sample code
showing how to start/stop a session, and i couldn't find anything...
2. Is the above usage scenario suitable for use with QuickFIX/J ?
(as opposed to rolling-my-own low-level tcp/ip handling)
3. Do i have to use a database for this scenario ? There were several
chapters on the online docs that describes setting up the database, but
what if i don't need a database? Can i just use QuickFIX/J as an API ?
4. On "setting up your project", the documentation said something about
"create a static initializer on your class, adding the line
System.loadLibrary("quickfix_jni") in order to load the appropriate
quickfix dll or shared object".
What does this bit do? What is a quickfix dll? I can't seem to find any
.dll or .jni files anywhere on my \quickfixj folder. Or am i missing
something here?
That's all for now. Thank you very much in advance,
best regards,
ts.
|
|
From: Chris A. <chr...@be...> - 2007-05-02 21:39:33
|
Excellent suggestion Steve, the issue is a thread deadlock. In the traces below, the session 'BEACONFIX->front-server-200-38' is the router forwarding a response message to the process that is submitting the 500 QuoteRequests. The session 'exchange-server-200-8->exchange-server200' is the recipient of the QuoteRequest messages. The deadlock occurs when the router is processing a QuoteRequest and a response to a QuoteRequest at the same time. In more abstract terms, the router is bridging between sessions A and B. Message 1 is received from A to forward to B at the same time Message 2 is received from B to forward to A. QuickFIX/J holds the session lock while processing an incoming message, so the dispatcher for Message 1 holds a lock on A and the dispatcher for Message 2 holds a lock on B. Each message wants to be sent to the other session, so dispatcher Message 1 is waiting for the lock on B and dispatcher Message 2 is waiting for the lock on A. Why does quickfix.Session.next() need to be synchronized? It looks like the synchronization in Session has been overdone. There maybe some code in next() that should be synchronized, but definitely not all of it. Found one Java-level deadlock: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D "QF/J Session dispatcher: FIX.4.4:BEACONFIX->front-server-200-38": waiting to lock monitor 0x080ece3c (object 0xe399f1e8, a quickfix.Session), which is held by "QF/J Session dispatcher: FIX.4.4:exchange-server-200-8->exchange-server200" "QF/J Session dispatcher: FIX.4.4:exchange-server-200-8->exchange-server200": waiting to lock monitor 0x080eccbc (object 0xe329fbb8, a quickfix.Session), which is held by "QF/J Session dispatcher: FIX.4.4:BEACONFIX->front-server-200-38" Java stack information for the threads listed above: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D "QF/J Session dispatcher: FIX.4.4:BEACONFIX->front-server-200-38": at quickfix.Session.send(Session.java:1616) - waiting to lock <0xe399f1e8> (a quickfix.Session) at quickfix.Session.sendToTarget(Session.java:423) at headend.quickfix.DefaultMessageSender.send(DefaultMessageSender.java:43) at headend.quickfix.DefaultMessageSender.send(DefaultMessageSender.java:63) at headend.quickfix.DefaultMessageSender.sendToAll(DefaultMessageSender.jav a:97) at headend.quickfix.AbstractMessageSender.sendToAll(AbstractMessageSender.j ava:27) at headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH andler.java:42) at headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH andler.java:37) at headend.quickfix.RouteMessageHandler.handleMessage(RouteMessageHandler.j ava:64) at headend.quickfix.AbstractFixListener.processMessage(AbstractFixListener. java:59) at headend.quickfix.AbstractFixListener.incomingRouteMessage(AbstractFixLis tener.java:119) at headend.quickfix.AppService.incomingRouteMessage(AppService.java:79) at headend.quickfix.AppService.toRoute(AppService.java:85) at headend.quickfix.RouteMessageHandler.sendMessage(RouteMessageHandler.jav a:53) at headend.clientportal.ClientPortalAgent$RouteTradingMessageHandler.sendMe ssage(ClientPortalAgent.java:160) at headend.quickfix.RouteMessageHandler.handleMessage(RouteMessageHandler.j ava:64) at headend.quickfix.AbstractFixListener.processMessage(AbstractFixListener. java:59) at headend.quickfix.AbstractFixListener.incomingMessage(AbstractFixListener .java:98) at headend.quickfix.AppService.incomingMessage(AppService.java:69) at headend.quickfix.BasicApplication.fromApp(BasicApplication.java:125) at headend.quickfix.QuickfixApplication.fromApp(QuickfixApplication.java:86 ) at quickfix.Session.fromCallback(Session.java:1189) at quickfix.Session.verify(Session.java:1143) at quickfix.Session.verify(Session.java:1218) at quickfix.Session.next(Session.java:670) - locked <0xe329fbb8> (a quickfix.Session) at quickfix.mina.ThreadPerSessionEventHandlingStrategy$MessageDispatchingTh read.run(ThreadPerSessionEventHandlingStrategy.java:75)=20 "QF/J Session dispatcher: FIX.4.4:exchange-server-200-8->exchange-server200": at quickfix.Session.isEnabled(Session.java:489) - waiting to lock <0xe329fbb8> (a quickfix.Session) at headend.quickfix.DefaultMessageSender.send(DefaultMessageSender.java:40) at headend.quickfix.AbstractMessageSender.send(AbstractMessageSender.java:2 3) at headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH andler.java:44) at headend.clientportal.ResponseMessageHandler.sendMessage(ResponseMessageH andler.java:37) at headend.quickfix.RouteMessageHandler.handleMessage(RouteMessageHandler.j ava:64) at headend.quickfix.AbstractFixListener.processMessage(AbstractFixListener. java:59) at headend.quickfix.AbstractFixListener.incomingMessage(AbstractFixListener .java:98) at headend.quickfix.AppService.incomingMessage(AppService.java:69) at headend.quickfix.BasicApplication.fromApp(BasicApplication.java:125) at headend.quickfix.QuickfixApplication.fromApp(QuickfixApplication.java:86 ) at quickfix.Session.fromCallback(Session.java:1189) at quickfix.Session.verify(Session.java:1143) at quickfix.Session.verify(Session.java:1218) at quickfix.Session.next(Session.java:670) - locked <0xe399f1e8> (a quickfix.Session) at quickfix.mina.ThreadPerSessionEventHandlingStrategy$MessageDispatchingTh read.run(ThreadPerSessionEventHandlingStrategy.java:75) -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Steve Bate Sent: Wednesday, May 02, 2007 3:46 PM To: qui...@li... Subject: Re: [Quickfixj-users] QuickFIX/J seizes up under load QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ QuickFIX/J Support: http://www.quickfixj.org/support/ Hi Chris, Have you looked at a Java thread dump to see if there are any clues there? Steve > -----Original Message----- > From: qui...@li... > [mailto:qui...@li...]On Behalf Of=20 > Chris Audley > Sent: Wednesday, May 02, 2007 3:14 PM > To: qui...@li... > Subject: [Quickfixj-users] QuickFIX/J seizes up under load >=20 >=20 > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ >=20 > I have a FIX based system that was developed on QuickFIX/C++ with Java > bindings. I'm interested in using QuickFIX/J for a number of reasons, > but I've had problems with it that I don't have with the native=20 > Quickfix. >=20 > The most severe problem I have is with QuickFIX/J locking up during=20 > heavy loads. I have a reproducible case where the client program=20 > tries to send nearly 500 QuoteRequest messages through a FIX router,=20 > both running QuickFIX. With native QuickFIX, the test runs without a=20 > hitch, however with QuickFIX/J it will fail every time. Anywhere=20 > between 10 to 60 messages will get through successfully but then the=20 > FIX router just stops. >=20 > There is no indication of an error in any logs, I've been specifically > looking for any logging that may have come from=20 > AbstractIoHandler.exceptionCaught(). >=20 > Once this error has occurred, no FIX traffic will go through the=20 > connection between the client and the router. The socket is still=20 > open, but the router doesn't seem to recognize it. Eventually the=20 > client will report the session is closed because the heart beat and=20 > TEST messages are missing. >=20 > Without any indications of a problem in the logs, I don't know where=20 > to begin looking for a solution. Does anyone have an idea what could=20 > be causing this behavior? >=20 > Thanks > Chris >=20 > ---------------------------------------------------------------------- > --- This SF.net email is sponsored by DB2 Express Download DB2 Express > C - the FREE version of DB2 express and take control of your XML. No=20 > limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users >=20 ------------------------------------------------------------------------ - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Quickfixj-users mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfixj-users |