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: Naresh B. <NB...@sa...> - 2007-04-28 12:19:47
|
Thanks Oren and Toli. Toli wrote:=20 > I think the HEAD version of QFJ actually supports what you want. > Check out QFJ-154 (http://www.quickfixj.org/jira/browse/QFJ-154) > The MessageFactory interface has the following function: > public Group create(String beginString, String msgType, int > correspondingFieldID); I looked at the implementation of MessageFactory. It appears that this implementation does not leverage the data dictionary and returns one of the generated classes (i.e. a compiled class). This approach works for standard FIX groups, but not for custom groups that I might define in the data dictionary. For example, the code below retrieves a standard group called NoAllocs in the AllocationInstruction message. =20 Group group =3D msgFactory.create( beginString, MsgType.AllocationInstruction, NoAllocs.FIELD); =20 What happens if I have a custom group called NoBids and there is no code generation and hence no NoBids.FIELD defined? I want to be able to define my group dynamically as follows: =20 Group group =3D dataDictionary.createGroup( MsgType.AllocationInstruction, "NoBids"); group.setString(dataDictionary.getFieldTag("BidID"), myBid.getId()); message.addGroup(group); =20 I think that the primary advantage of this approach is that vendors can change custom tag numbers on me (which they do!) and I can deal with it - I don't have to change a single line of code. In fact, I can even refresh my data dictionary cache in a running system to cope up with this change. Let me know if this makes sense. Thanks. Naresh -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Oren Miller Sent: Friday, April 27, 2007 3:58 PM To: qui...@li... Subject: Re: [Quickfixj-users] Dynamic (vs. compile-time) message handling QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ QuickFIX/J Support: http://www.quickfixj.org/support/ > To answer your question about field order in Group - I don't think it > matters what order you have the fields in the group, as long as you > construct the Group correctly. > I just put together a quick unit test with fields out of order in a > group, and it validates just fine. Depends on who your talking to. QuickFIX will accept it, but others =20 won't. ------------------------------------------------------------------------ - 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: Naresh B. <NB...@sa...> - 2007-04-28 12:00:30
|
Thanks Oren. Exactly what I was looking for. Naresh -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Oren Miller Sent: Friday, April 27, 2007 3:56 PM To: qui...@li... Subject: Re: [Quickfixj-users] Order of fields in a repeating group > 4. Fields within repeating data groups must be specified in the order=20 > that the fields are > specified in the message definition within the FIX specification=20 > document. The NoXXX field > where XXX is the field being counted specifies the number of=20 > repeating group instances that > must immediately precede the repeating group contents. |
|
From: Steve B. <st...@te...> - 2007-04-27 20:43:08
|
This looks like something is either calling System.exit() or the main function is exiting. I'd look there first. Is there any related information in your session-specific log or does it not get that far? > -----Original Message----- > From: qui...@li... > [mailto:qui...@li...]On Behalf Of > Robert Brueckmann > Sent: Friday, April 27, 2007 1:45 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/ > We've removed the NOT NULL constraint (kind of weird since this olumn is > part of the primary key and by oracle standards a column in the primary > key can't be not null so we had to remove that constraint as well...so > we removed these constraints and fired it up...no exceptions now but now > the engine starts up...logs a few messages to the screen which I'll > paste below and then immediately shuts down with no exception or message > of why it's immediately shutting down. > > Any thoughts?!? > > Here's the console output: > > 2007-04-27 13:38:24,215 DEBUG [main] proxool.ShutdownHook > (ShutdownHook.java:73) - Registered shutdownHook > 2007-04-27 13:38:24,230 DEBUG [main] proxool.HouseKeeperController > (HouseKeeperController.java:84) - Registering 'quickfixj-1' house keeper > 2007-04-27 13:38:24,230 DEBUG [main] proxool.HouseKeeperController > (HouseKeeperController.java:92) - Starting a house keeper thread > 2007-04-27 13:38:26,855 DEBUG [main] proxool.ConnectionResetter > (ConnectionResetter.java:168) - Remembering default value: isReadOnly() > = false > 2007-04-27 13:38:26,871 DEBUG [main] proxool.ConnectionResetter > (ConnectionResetter.java:168) - Remembering default value: > getHoldability() = 1 > 2007-04-27 13:38:26,871 DEBUG [main] proxool.ConnectionResetter > (ConnectionResetter.java:168) - Remembering default value: > getTransactionIsolation() = 2 > 2007-04-27 13:38:26,886 DEBUG [main] proxool.ConnectionResetter > (ConnectionResetter.java:168) - Remembering default value: getTypeMap() > = {SYS.XMLTYPE=class oracle.xdb.XMLTypeFactory} > 2007-04-27 13:38:26,886 DEBUG [main] proxool.ConnectionResetter > (ConnectionResetter.java:168) - Remembering default value: getCatalog() > = null > 2007-04-27 13:38:26,886 INFO [main] proxool.ConnectionPool > (ConnectionPool.java:623) - Proxool statistics legend: "s - r (a/t/o)" > > s=served, r=refused (only shown if non-zero), a=active, t=total, > o=offline (being tested) > 2007-04-27 13:38:26,886 DEBUG [main] proxool.Prototyper > (Prototyper.java:204) - 000000 (01/01/00) - Connection #1 created on > demand = ACTIVE > 2007-04-27 13:38:27,074 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.internal.ClientDataSupport > 2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.OracleConnection > 2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.internal.OracleConnection > 2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface java.sql.Connection > 2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface oracle.sql.ClobDBAccess > 2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface oracle.sql.BlobDBAccess > 2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.sql.BfileDBAccess > 2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface java.sql.Statement > 2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.OracleStatement > 2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.OraclePreparedStatement > 2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > java.sql.PreparedStatement > 2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.internal.OraclePreparedStatement > 2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory > (ProxyFactory.java:209) - Implementing interface > oracle.jdbc.internal.OracleStatement > 2007-04-27 13:38:28,574 DEBUG [ShutdownHook] proxool.ShutdownHook > (ShutdownHook.java:93) - Running ShutdownHook > 2007-04-27 13:38:28,574 INFO [Shutdown Hook] proxool.ConnectionPool > (ConnectionPool.java:490) - Shutting down 'quickfixj-1' pool immediately > [Shutdown Hook] > 2007-04-27 13:38:28,589 DEBUG [Shutdown Hook] proxool.ConnectionPool > (ConnectionPool.java:447) - 000004 (00/00/00) - #0001 removed because of > shutdown. > 2007-04-27 13:38:28,589 DEBUG [Shutdown Hook] proxool.ConnectionPool > (ConnectionPool.java:553) - Connection #1 closed > 2007-04-27 13:38:28,589 INFO [Shutdown Hook] proxool.ConnectionPool > (ConnectionPool.java:570) - 'quickfixj-1' pool has been closed down by > Shutdown Hook in 15 milliseconds. > 2007-04-27 13:38:28,589 INFO [Shutdown Hook] > proxool.PrototyperController (PrototyperController.java:100) - Stopping > Prototyper thread > 2007-04-27 13:38:28,589 INFO [Shutdown Hook] > proxool.HouseKeeperController (HouseKeeperController.java:107) - > Stopping HouseKeeper thread > > Merlin Securities - #1 Prime Broker North America, #1 Prime > Broker Single Strategy Funds, #1 Prime Broker Funds Under $100M - > Global Custodian 2007 > > > > > -------------------------------------------------------- > > 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, distribution 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. > > Merlin Securities, LLC is a registered broker-dealer. Services > offered through 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 solicitation or > recommendation to buy or sell a particular security. > > > > ------------------------------------------------------------------------- > 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: Oren M. <or...@qu...> - 2007-04-27 19:57:58
|
> To answer your question about field order in Group - I don't think it > matters what order you have the fields in the group, as long as you > construct the Group correctly. > I just put together a quick unit test with fields out of order in a > group, and it validates just fine. Depends on who your talking to. QuickFIX will accept it, but others won't. |
|
From: Oren M. <or...@qu...> - 2007-04-27 19:56:07
|
4. Fields within repeating data groups must be specified in the order that the fields are specified in the message definition within the FIX specification document. The NoXXX field where XXX is the field being counted specifies the number of repeating group instances that must immediately precede the repeating group contents. On Apr 27, 2007, at 11:56 AM, Naresh Bhatia wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > I am curious if the order of fields in a repeating group is > important. I see that quickfixj provides a Group constructor which > allow to specify the order, but I could not find any such > requirement in the FIX specification (FIX 4.4 vol 1 page 18 - > Repeating Groups) - all it requires is that the delimiter be the > first field in the group. Can someone please clarify? > > Thanks. > Naresh > ---------------------------------------------------------------------- > --- > 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-04-27 17:59:31
|
Naresh, I think the HEAD version of QFJ actually supports what you want. Check out QFJ-154 (http://www.quickfixj.org/jira/browse/QFJ-154) The MessageFactory interface has the following function: public Group create(String beginString, String msgType, int correspondingFieldID); This may not be exactly what you want, but it helps to do this in a fix-version-agnostic way. If you have a DataDictionary, you can get the beginString with dataDictionary.getVersion() To answer your question about field order in Group - I don't think it matters what order you have the fields in the group, as long as you construct the Group correctly. I just put together a quick unit test with fields out of order in a group, and it validates just fine. Once you have your message generated from a broker-specific DataDictionary, you can use dictionary.validate(message, true) to validate the message prior to sending it out (or you can do it in the tests at least). The HEAD version of QFJ has a new validate() function that only validates the body, specifically for this purpose. so if this helps. try using the code from HEAD, it's stable. On 4/27/07, Naresh Bhatia <NB...@sa...> wrote: > > I need some advice from this group about dynamic (vs. compile-time) message > handling. I am in a situation where we are building a system that will talk > to approximately 300 brokers. The brokers support varying levels of FIX and > many of them have defined custom fields and groups. Supporting all these > variations in code with type-safe APIs is going to be a nightmare, so I am > willing to sacrifice compile-time safety in favor of dynamic message > handling. I have started externalizing all message configuration in data > dictionaries - one per broker (of course, these are based on one of 5 > FIX4x.xml files provided with quickfix). Does this approach make sense? > > So far I am doing pretty ok with message creation as well as parsing using > the data dictionary, except with repeating groups. My hope was that I could > create a Group definition right from the data dictionary, but the best it > can do right now is to give me GroupInfo, thus loosing the field order. Am I > missing something? > > I also checked out the MessageFactory api, but as I understand it, it > returns one of the generated Message or Group classes and does not use the > data dictionary. Please correct me if I am wrong. > > Thanks for your help. > > Naresh -- Toli Kuznets http://www.marketcetera.com: Open-Source Trading Platform download.run.trade. |
|
From: Robert B. <rbr...@me...> - 2007-04-27 17:50:36
|
To add to this, I checked with the DBA and both times I fired up the engine, it inserted a message in the Sessions table and the Event_Log table...but then the engine just dies. I see in the output I pasted in my last email that Connection #1 is closed...no other explanation though and I'm assuming this is the cause of the problem...but it's certainly nothing we're doing on the database side of things...just thought I'd add that bit of info. Thanks, Rob Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single S= trategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007 =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: Robert B. <rbr...@me...> - 2007-04-27 17:45:09
|
We've removed the NOT NULL constraint (kind of weird since this olumn is
part of the primary key and by oracle standards a column in the primary
key can't be not null so we had to remove that constraint as well...so
we removed these constraints and fired it up...no exceptions now but now
the engine starts up...logs a few messages to the screen which I'll
paste below and then immediately shuts down with no exception or message
of why it's immediately shutting down.
Any thoughts?!?
Here's the console output:
2007-04-27 13:38:24,215 DEBUG [main] proxool.ShutdownHook
(ShutdownHook.java:73) - Registered shutdownHook
2007-04-27 13:38:24,230 DEBUG [main] proxool.HouseKeeperController
(HouseKeeperController.java:84) - Registering 'quickfixj-1' house keeper
2007-04-27 13:38:24,230 DEBUG [main] proxool.HouseKeeperController
(HouseKeeperController.java:92) - Starting a house keeper thread
2007-04-27 13:38:26,855 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value: isReadOnly()
=3D false
2007-04-27 13:38:26,871 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value:
getHoldability() =3D 1
2007-04-27 13:38:26,871 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value:
getTransactionIsolation() =3D 2
2007-04-27 13:38:26,886 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value: getTypeMap()
=3D {SYS.XMLTYPE=3Dclass oracle.xdb.XMLTypeFactory}
2007-04-27 13:38:26,886 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value: getCatalog()
=3D null
2007-04-27 13:38:26,886 INFO [main] proxool.ConnectionPool
(ConnectionPool.java:623) - Proxool statistics legend: "s - r (a/t/o)"
> s=3Dserved, r=3Drefused (only shown if non-zero), a=3Dactive, t=3Dtotal,
o=3Doffline (being tested)
2007-04-27 13:38:26,886 DEBUG [main] proxool.Prototyper
(Prototyper.java:204) - 000000 (01/01/00) - Connection #1 created on
demand =3D ACTIVE
2007-04-27 13:38:27,074 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.ClientDataSupport
2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.OracleConnection
2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.OracleConnection
2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface java.sql.Connection
2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface oracle.sql.ClobDBAccess
2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface oracle.sql.BlobDBAccess
2007-04-27 13:38:27,089 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.sql.BfileDBAccess
2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface java.sql.Statement
2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.OracleStatement
2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.OraclePreparedStatement
2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
java.sql.PreparedStatement
2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.OraclePreparedStatement
2007-04-27 13:38:27,855 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.OracleStatement
2007-04-27 13:38:28,574 DEBUG [ShutdownHook] proxool.ShutdownHook
(ShutdownHook.java:93) - Running ShutdownHook
2007-04-27 13:38:28,574 INFO [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:490) - Shutting down 'quickfixj-1' pool immediately
[Shutdown Hook]
2007-04-27 13:38:28,589 DEBUG [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:447) - 000004 (00/00/00) - #0001 removed because of
shutdown.
2007-04-27 13:38:28,589 DEBUG [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:553) - Connection #1 closed
2007-04-27 13:38:28,589 INFO [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:570) - 'quickfixj-1' pool has been closed down by
Shutdown Hook in 15 milliseconds.
2007-04-27 13:38:28,589 INFO [Shutdown Hook]
proxool.PrototyperController (PrototyperController.java:100) - Stopping
Prototyper thread
2007-04-27 13:38:28,589 INFO [Shutdown Hook]
proxool.HouseKeeperController (HouseKeeperController.java:107) -
Stopping HouseKeeper thread
Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single S=
trategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007
=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: Naresh B. <NB...@sa...> - 2007-04-27 17:31:56
|
I need some advice from this group about dynamic (vs. compile-time) = message handling. I am in a situation where we are building a system = that will talk to approximately 300 brokers. The brokers support varying = levels of FIX and many of them have defined custom fields and groups. = Supporting all these variations in code with type-safe APIs is going to = be a nightmare, so I am willing to sacrifice compile-time safety in = favor of dynamic message handling. I have started externalizing all = message configuration in data dictionaries - one per broker (of course, = these are based on one of 5 FIX4x.xml files provided with quickfix). = Does this approach make sense? =20 So far I am doing pretty ok with message creation as well as parsing = using the data dictionary, except with repeating groups. My hope was = that I could create a Group definition right from the data dictionary, = but the best it can do right now is to give me GroupInfo, thus loosing = the field order. Am I missing something? =20 I also checked out the MessageFactory api, but as I understand it, it = returns one of the generated Message or Group classes and does not use = the data dictionary. Please correct me if I am wrong. =20 Thanks for your help. =20 Naresh |
|
From: gm-mrktc <gm...@ma...> - 2007-04-27 17:20:37
|
Hey Tommy and Alex, I just wanted to add a few resources to the discussion. The command line we use for starting up the JVM with JMX support is: java -Dcom.sun.management.jmxremote ... Additionally we need to do some initialization in our startup code, which you can see here (specifically see line 55, starting with JmxExporter) : http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/src/main/java/org/marketcetera/oms/OrderManagementSystem.java Also there are a couple of pages on the QuickFIX/J site that might be of help. http://www.quickfixj.org/confluence/display/qfj/QFJ-Specific+JMX+Management+Console http://www.quickfixj.org/confluence/display/qfj/JMX+Instrumentation With respect to changing the SenderCompID on the fly, I think that is going to be difficult, because the way QuickFIX/J is architected, sessions with different SenderCompIDs are _different_ sessions. That is SenderCompID is part of the primary key--if you will-- that identifies a session. That being said, I have started some work on being able to create new sessions on the fly. http://www.quickfixj.org/jira/browse/QFJ-165 Would your use case be covered if you could stop one session and start a new one with the new SenderCompID? graham -- Marketcetera Trading Platform download.run.trade. www.marketcetera.org Tommy Hannon wrote: > > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Alex, > > The SenderCompID is a listed attribute and appears editable, but I > have not attempted to change this as it is assigned in the "Settings" > file and we have no need to change it on the fly. > > Regarding management... make sure you have made necessary code > changes depending on your version of Java as described in the user > manual. The "jconsole" application is in the java installation "bin" > subdirectory. Just run it (you do not need any parameters). It > would probably be best if you run it on the same machine as your FIX > application under the same user. The process ID will be listed and > all you have to do is select it and click "connect". You can also > run it remotely, but you will probably need to open firewall ports. > > I hope that helps. > > -Tommy > > On Apr 27, 2007, at 5:12 AM, Alex McGlashan wrote: > >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >> Hi Tommy, >> >> I was interested to read your note below about updating session >> attributes on the fly. Does this include new SenderCompID values? >> Could you describe the process for starting the console and connecting >> in a bit more detail? >> >> Thanks in advance, >> Alex >> >> >> -----Original Message----- >> From: qui...@li... >> [mailto:qui...@li...] On Behalf Of >> Tommy Hannon >> Sent: 26 April 2007 17:54 >> To: qui...@li... >> Subject: Re: [Quickfixj-users] newbie questions >> >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >> I just started developing with QuickFIX/J last week and am totally >> delighted with the ease of use (kinda of like switching to a Mac). >> >> Most everything you need to manage the "grunt-work" of the protocol >> is handled using the "Setting" file as described in the user manual. >> Session level stuff, Logon/Logout, heartbeats, resends, all are >> handled "under-the-hood" and need not be handled at your application >> level code. IMHO, the greatest benefit to new users is the >> management extensions. >> >> Just add a few lines of code to a Java 1.5 codebase and a system >> property on the command line; start "jconsole" and connect! (Be sure >> to start the console using the same user as your application if >> running locally) From there the session attributes page is a real >> help. you can view or update values on-the-fly. Go to the >> "Operations" tab and you can reset, disconnect, logon, or logoff >> individual sessions. >> >> In general this product is very is easy to use, almost beyond >> belief. My suggestion would be to check out the "Creating Your >> Application", "Receiving Messages" and "Sending Messages" sections of >> the user manual paying attention to the "Most Type Safe" approach. >> >> Good luck! >> >> -Tommy >> >> On Apr 26, 2007, at 10:46 AM, Toli Kuznets wrote: >> >>> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >>> QuickFIX/J Support: http://www.quickfixj.org/support/ >>> Robert, >>> >>>> 1.) We plan on connecting to 4 end-points, so I have 4 sessions >>>> in my >>>> configuration file...is there a benefit to using the >>>> ThreadedSocketInitiator as opposed to just the SocketInitiator? >>> >>> This is a classic trade-off. if you need all your incoming >>> messages to >>> be processed in order they are coming in across all connections, then >>> use the regular SocketInitiator. >>> If the 4 connections are totally unrelated then you can process them >>> concurrently using the ThreadedSocketInitiator >>> >>>> >>>> 2.) If one of our end-point's connection goes down indefinitely, >>>> are >>>> the remaining 3 sessions ok? Say one of the 4 end-points goes down >>>> momentarily and then goes back up, will the engine reconnect or do I >>>> have to bring the entire engine down and reconnect all 4 sessions? >>> >>> QFJ should reconnect to the lost connection when it comes back u and >>> renegotiate a logon. >>> there area various timeout settings you can tweak to modify the >>> timeout behaviour. >>> >>>> 3.) Examples of the custom Initiator classes have a 'System.in' >>>> statement waiting for a user to hit a key on the keyboard to exit >>>> the >>>> engine. If we want to put this process in the background, this >>>> isn't a >>>> feasible design obviously...so I was curious what people are >>>> doing to >>>> build an engine that can be set as a background process and then >>>> when >>>> brought back to the foreground, how is the engine being stopped >>>> elegantly so the appropriate logout and disconnect procedures occur? >>>> >>> >>> I'd be intersted to hear how others approach this problem as well. >>> For >>> now, we create the socket initiator and FIX listenrers in Spring, and >>> then the main thread just goes to sleep (we do a new >>> Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if >>> you >>> run it on the console, or with an /etc/init.d script wrapping a 'kill >>> -9' on our virtual appliance. Here's the code for reference: >>> http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/ >>> src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 >>> >>> >>> -- >>> Toli Kuznets >>> http://www.marketcetera.com: Open-Source Trading Platform >>> download.run.trade. >>> >>> --------------------------------------------------------------------- >>> - >> >>> --- >>> 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 >> >> Eurobase International Limited and its subsidiaries (Eurobase) are >> unable to exercise control over the content of information in E- >> Mails. Any views and opinions expressed may be personal to the >> sender and are not necessarily those of Eurobase. Eurobase will not >> enter into any contractual obligations in respect of any part of >> its business in any E-mail. >> >> Privileged / confidential information may be contained in this >> message and /or any attachments. This E-mail is intended for the >> use of the addressee(s) only and may contain confidential >> information. If you are not the / an intended recipient, you are >> hereby notified that any use or dissemination of this communication >> is strictly prohibited. If you receive this transmission in error, >> please notify us immediately, and then delete this E-mail. >> >> Neither the sender nor Eurobase accepts any liability whatsoever >> for any defects of any kind either in or arising from this E-mail >> transmission. E-Mail transmission cannot be guaranteed to be secure >> or error-free, as messages can be intercepted, lost, corrupted, >> destroyed, contain viruses, or arrive late or incomplete. Eurobase >> does not accept any responsibility for viruses and it is your >> responsibility to scan any attachments. >> >> Eurobase Systems Limited is the main trading company in the >> Eurobase International Group; registered in England and Wales as >> company number 02251162; registered address: Essex House, 2 County >> Place, Chelmsford, Essex CM2 0RE, UK. >> >> >> ---------------------------------------------------------------------- >> --- >> 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 > > -- View this message in context: http://www.nabble.com/Sending-a-Heartbeat-tf3635037.html#a10222437 Sent from the QuickFIX/J mailing list archive at Nabble.com. |
|
From: Naresh B. <NB...@sa...> - 2007-04-27 16:56:14
|
I am curious if the order of fields in a repeating group is important. I = see that quickfixj provides a Group constructor which allow to specify = the order, but I could not find any such requirement in the FIX = specification (FIX 4.4 vol 1 page 18 - Repeating Groups) - all it = requires is that the delimiter be the first field in the group. Can = someone please clarify? =20 Thanks. Naresh |
|
From: Tommy H. <Tom...@Bo...> - 2007-04-27 16:40:46
|
Alex, The SenderCompID is a listed attribute and appears editable, but I have not attempted to change this as it is assigned in the "Settings" file and we have no need to change it on the fly. Regarding management... make sure you have made necessary code changes depending on your version of Java as described in the user manual. The "jconsole" application is in the java installation "bin" subdirectory. Just run it (you do not need any parameters). It would probably be best if you run it on the same machine as your FIX application under the same user. The process ID will be listed and all you have to do is select it and click "connect". You can also run it remotely, but you will probably need to open firewall ports. I hope that helps. -Tommy On Apr 27, 2007, at 5:12 AM, Alex McGlashan wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Hi Tommy, > > I was interested to read your note below about updating session > attributes on the fly. Does this include new SenderCompID values? > Could you describe the process for starting the console and connecting > in a bit more detail? > > Thanks in advance, > Alex > > > -----Original Message----- > From: qui...@li... > [mailto:qui...@li...] On Behalf Of > Tommy Hannon > Sent: 26 April 2007 17:54 > To: qui...@li... > Subject: Re: [Quickfixj-users] newbie questions > > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > I just started developing with QuickFIX/J last week and am totally > delighted with the ease of use (kinda of like switching to a Mac). > > Most everything you need to manage the "grunt-work" of the protocol > is handled using the "Setting" file as described in the user manual. > Session level stuff, Logon/Logout, heartbeats, resends, all are > handled "under-the-hood" and need not be handled at your application > level code. IMHO, the greatest benefit to new users is the > management extensions. > > Just add a few lines of code to a Java 1.5 codebase and a system > property on the command line; start "jconsole" and connect! (Be sure > to start the console using the same user as your application if > running locally) From there the session attributes page is a real > help. you can view or update values on-the-fly. Go to the > "Operations" tab and you can reset, disconnect, logon, or logoff > individual sessions. > > In general this product is very is easy to use, almost beyond > belief. My suggestion would be to check out the "Creating Your > Application", "Receiving Messages" and "Sending Messages" sections of > the user manual paying attention to the "Most Type Safe" approach. > > Good luck! > > -Tommy > > On Apr 26, 2007, at 10:46 AM, Toli Kuznets wrote: > >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >> Robert, >> >>> 1.) We plan on connecting to 4 end-points, so I have 4 sessions >>> in my >>> configuration file...is there a benefit to using the >>> ThreadedSocketInitiator as opposed to just the SocketInitiator? >> >> This is a classic trade-off. if you need all your incoming >> messages to >> be processed in order they are coming in across all connections, then >> use the regular SocketInitiator. >> If the 4 connections are totally unrelated then you can process them >> concurrently using the ThreadedSocketInitiator >> >>> >>> 2.) If one of our end-point's connection goes down indefinitely, >>> are >>> the remaining 3 sessions ok? Say one of the 4 end-points goes down >>> momentarily and then goes back up, will the engine reconnect or do I >>> have to bring the entire engine down and reconnect all 4 sessions? >> >> QFJ should reconnect to the lost connection when it comes back u and >> renegotiate a logon. >> there area various timeout settings you can tweak to modify the >> timeout behaviour. >> >>> 3.) Examples of the custom Initiator classes have a 'System.in' >>> statement waiting for a user to hit a key on the keyboard to exit >>> the >>> engine. If we want to put this process in the background, this >>> isn't a >>> feasible design obviously...so I was curious what people are >>> doing to >>> build an engine that can be set as a background process and then >>> when >>> brought back to the foreground, how is the engine being stopped >>> elegantly so the appropriate logout and disconnect procedures occur? >>> >> >> I'd be intersted to hear how others approach this problem as well. >> For >> now, we create the socket initiator and FIX listenrers in Spring, and >> then the main thread just goes to sleep (we do a new >> Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if >> you >> run it on the console, or with an /etc/init.d script wrapping a 'kill >> -9' on our virtual appliance. Here's the code for reference: >> http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/ >> src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 >> >> >> -- >> Toli Kuznets >> http://www.marketcetera.com: Open-Source Trading Platform >> download.run.trade. >> >> --------------------------------------------------------------------- >> - > >> --- >> 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 > > Eurobase International Limited and its subsidiaries (Eurobase) are > unable to exercise control over the content of information in E- > Mails. Any views and opinions expressed may be personal to the > sender and are not necessarily those of Eurobase. Eurobase will not > enter into any contractual obligations in respect of any part of > its business in any E-mail. > > Privileged / confidential information may be contained in this > message and /or any attachments. This E-mail is intended for the > use of the addressee(s) only and may contain confidential > information. If you are not the / an intended recipient, you are > hereby notified that any use or dissemination of this communication > is strictly prohibited. If you receive this transmission in error, > please notify us immediately, and then delete this E-mail. > > Neither the sender nor Eurobase accepts any liability whatsoever > for any defects of any kind either in or arising from this E-mail > transmission. E-Mail transmission cannot be guaranteed to be secure > or error-free, as messages can be intercepted, lost, corrupted, > destroyed, contain viruses, or arrive late or incomplete. Eurobase > does not accept any responsibility for viruses and it is your > responsibility to scan any attachments. > > Eurobase Systems Limited is the main trading company in the > Eurobase International Group; registered in England and Wales as > company number 02251162; registered address: Essex House, 2 County > Place, Chelmsford, Essex CM2 0RE, UK. > > > ---------------------------------------------------------------------- > --- > 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: Joerg T. <Joe...@ma...> - 2007-04-27 11:40:56
|
On 04/27/07 13:26, Thomas Hügel wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Hello, > > as of FIX 4.4 there is username and password support in the "Login" > message (tag 553,. Is there a way to initiate a session using > username/password ?. Just use the fromAdmin() callback: void toAdmin(Message message, SessionID sessionId) { final Message.Header header = message.getHeader(); if ( header.getField( MsgType.FIELD ).valueEquals( MsgType.LOGON ) ) { message.setField( UserName.FIELD, userName ); message.setField( Password.FIELD, password ); } } 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: <hue...@ya...> - 2007-04-27 11:26:39
|
Hello, as of FIX 4.4 there is username and password support in the "Login" message (tag 553,. Is there a way to initiate a session using username/password ?. Regards Thomas |
|
From: Alex M. <ale...@eu...> - 2007-04-27 10:15:13
|
Hi Tommy, I was interested to read your note below about updating session attributes on the fly. Does this include new SenderCompID values? Could you describe the process for starting the console and connecting in a bit more detail? Thanks in advance, Alex -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Tommy Hannon Sent: 26 April 2007 17:54 To: qui...@li... Subject: Re: [Quickfixj-users] newbie questions QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ QuickFIX/J Support: http://www.quickfixj.org/support/ I just started developing with QuickFIX/J last week and am totally =20 delighted with the ease of use (kinda of like switching to a Mac). Most everything you need to manage the "grunt-work" of the protocol =20 is handled using the "Setting" file as described in the user manual. =20 Session level stuff, Logon/Logout, heartbeats, resends, all are =20 handled "under-the-hood" and need not be handled at your application =20 level code. IMHO, the greatest benefit to new users is the =20 management extensions. Just add a few lines of code to a Java 1.5 codebase and a system =20 property on the command line; start "jconsole" and connect! (Be sure =20 to start the console using the same user as your application if =20 running locally) From there the session attributes page is a real =20 help. you can view or update values on-the-fly. Go to the =20 "Operations" tab and you can reset, disconnect, logon, or logoff =20 individual sessions. In general this product is very is easy to use, almost beyond =20 belief. My suggestion would be to check out the "Creating Your =20 Application", "Receiving Messages" and "Sending Messages" sections of =20 the user manual paying attention to the "Most Type Safe" approach. Good luck! -Tommy On Apr 26, 2007, at 10:46 AM, Toli Kuznets wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Robert, > >> 1.) We plan on connecting to 4 end-points, so I have 4 sessions =20 >> in my >> configuration file...is there a benefit to using the >> ThreadedSocketInitiator as opposed to just the SocketInitiator? > > This is a classic trade-off. if you need all your incoming messages to > be processed in order they are coming in across all connections, then > use the regular SocketInitiator. > If the 4 connections are totally unrelated then you can process them > concurrently using the ThreadedSocketInitiator > >> >> 2.) If one of our end-point's connection goes down indefinitely, are >> the remaining 3 sessions ok? Say one of the 4 end-points goes down >> momentarily and then goes back up, will the engine reconnect or do I >> have to bring the entire engine down and reconnect all 4 sessions? > > QFJ should reconnect to the lost connection when it comes back u and > renegotiate a logon. > there area various timeout settings you can tweak to modify the > timeout behaviour. > >> 3.) Examples of the custom Initiator classes have a 'System.in' >> statement waiting for a user to hit a key on the keyboard to exit the >> engine. If we want to put this process in the background, this =20 >> isn't a >> feasible design obviously...so I was curious what people are doing to >> build an engine that can be set as a background process and then when >> brought back to the foreground, how is the engine being stopped >> elegantly so the appropriate logout and disconnect procedures occur? >> > > I'd be intersted to hear how others approach this problem as well. For > now, we create the socket initiator and FIX listenrers in Spring, and > then the main thread just goes to sleep (we do a new > Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if you > run it on the console, or with an /etc/init.d script wrapping a 'kill > -9' on our virtual appliance. Here's the code for reference: > http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/=20 > src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 > > > --=20 > Toli Kuznets > http://www.marketcetera.com: Open-Source Trading Platform > download.run.trade. > > ---------------------------------------------------------------------- > --- > 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 Eurobase International Limited and its subsidiaries (Eurobase) are = unable to exercise control over the content of information in E-Mails. = Any views and opinions expressed may be personal to the sender and are = not necessarily those of Eurobase. Eurobase will not enter into any = contractual obligations in respect of any part of its business in any = E-mail.=20 Privileged / confidential information may be contained in this message = and /or any attachments. This E-mail is intended for the use of the = addressee(s) only and may contain confidential information. If you are = not the / an intended recipient, you are hereby notified that any use or = dissemination of this communication is strictly prohibited. If you = receive this transmission in error, please notify us immediately, and = then delete this E-mail.=20 Neither the sender nor Eurobase accepts any liability whatsoever for any = defects of any kind either in or arising from this E-mail transmission. = E-Mail transmission cannot be guaranteed to be secure or error-free, as = messages can be intercepted, lost, corrupted, destroyed, contain = viruses, or arrive late or incomplete. Eurobase does not accept any = responsibility for viruses and it is your responsibility to scan any = attachments. Eurobase Systems Limited is the main trading company in the Eurobase = International Group; registered in England and Wales as company number = 02251162; registered address: Essex House, 2 County Place, Chelmsford, = Essex CM2 0RE, UK. |
|
From: Joerg T. <Joe...@ma...> - 2007-04-27 08:10:47
|
On 04/26/07 17:46, Toli Kuznets wrote: >> 3.) Examples of the custom Initiator classes have a 'System.in' >> statement waiting for a user to hit a key on the keyboard to exit the >> engine. If we want to put this process in the background, this isn't a >> feasible design obviously...so I was curious what people are doing to >> build an engine that can be set as a background process and then when >> brought back to the foreground, how is the engine being stopped >> elegantly so the appropriate logout and disconnect procedures occur? > > I'd be intersted to hear how others approach this problem as well. For > now, we create the socket initiator and FIX listenrers in Spring, and > then the main thread just goes to sleep (we do a new > Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if you > run it on the console, or with an /etc/init.d script wrapping a 'kill > -9' on our virtual appliance. Here's the code for reference: > http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 On UNIX, you can send your process into background by a double-fork: You start a background process starter & and this starter process starts your application into the background: starter: application </dev/null >logfile 2>&1 & echo $! >application.pid exit Now this process is a real daemon, ie child of the init process with PID 1. In addition, it is not tight to a terminal by redirecting stdin ("<"), stdout (">") and stderr ( "2>" ). You can also consider to put this in your own process group if you enable the monitor mode in the bash: set -m Then every background process started with "&" is put into his own process group. The PID of the initial process is then the process group id. To kill all processes in this group: kill -$PID (i.e. the negative value) Using the saved "application.pid" you can stop this process using kill $(< application.pid) # bash kill `cat application.pid` # bourne shell This signal is then catched by the shutdown handler (copy from previous posting): Thread shutdownHook = new Thread( "Gateway.shutdownHook" ) { public void run() { shutdown( "Terminated by runtime system" ); } }; Runtime.getRuntime().addShutdownHook( shutdownHook ); Then in the shutdown() method you can do something like this: acceptor.stop(); Hope this helps! I have no idea how to do this using Windows since I simply do not use it for anything. 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-04-27 07:41:31
|
On 04/26/07 19:05, Tommy Hannon wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > BTW, another approach to question #3... > > Use RMI to expose methods to an external process. From there, you > can write a simple application that can call these methods > (performing whatever tasks you need). I guess another alternative > would be to call the hooks in the management extensions if you only > need those methods that have already bee exposed. > > You should also register a shutdown thread. This will get called > when the Ctrl-C interrupt is passed to the JVM. You can gracefully > close DB connections, files. etc. before you program is terminated. Thread shutdownHook = new Thread( "Gateway.shutdownHook" ) { public void run() { shutdown( "Terminated by runtime system" ); } }; Runtime.getRuntime().addShutdownHook( shutdownHook ); Then in the shutdown() method you can do something like this: acceptor.stop(); Cheers, Jörg > On Apr 26, 2007, at 11:54 AM, Tommy Hannon wrote: > >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >> I just started developing with QuickFIX/J last week and am totally >> delighted with the ease of use (kinda of like switching to a Mac). >> >> Most everything you need to manage the "grunt-work" of the protocol >> is handled using the "Setting" file as described in the user manual. >> Session level stuff, Logon/Logout, heartbeats, resends, all are >> handled "under-the-hood" and need not be handled at your application >> level code. IMHO, the greatest benefit to new users is the >> management extensions. >> >> Just add a few lines of code to a Java 1.5 codebase and a system >> property on the command line; start "jconsole" and connect! (Be sure >> to start the console using the same user as your application if >> running locally) From there the session attributes page is a real >> help. you can view or update values on-the-fly. Go to the >> "Operations" tab and you can reset, disconnect, logon, or logoff >> individual sessions. >> >> In general this product is very is easy to use, almost beyond >> belief. My suggestion would be to check out the "Creating Your >> Application", "Receiving Messages" and "Sending Messages" sections of >> the user manual paying attention to the "Most Type Safe" approach. >> >> Good luck! >> >> -Tommy >> >> On Apr 26, 2007, at 10:46 AM, Toli Kuznets wrote: >> >>> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >>> QuickFIX/J Support: http://www.quickfixj.org/support/ >>> Robert, >>> >>>> 1.) We plan on connecting to 4 end-points, so I have 4 sessions >>>> in my >>>> configuration file...is there a benefit to using the >>>> ThreadedSocketInitiator as opposed to just the SocketInitiator? >>> This is a classic trade-off. if you need all your incoming >>> messages to >>> be processed in order they are coming in across all connections, then >>> use the regular SocketInitiator. >>> If the 4 connections are totally unrelated then you can process them >>> concurrently using the ThreadedSocketInitiator >>> >>>> 2.) If one of our end-point's connection goes down indefinitely, >>>> are >>>> the remaining 3 sessions ok? Say one of the 4 end-points goes down >>>> momentarily and then goes back up, will the engine reconnect or do I >>>> have to bring the entire engine down and reconnect all 4 sessions? >>> QFJ should reconnect to the lost connection when it comes back u and >>> renegotiate a logon. >>> there area various timeout settings you can tweak to modify the >>> timeout behaviour. >>> >>>> 3.) Examples of the custom Initiator classes have a 'System.in' >>>> statement waiting for a user to hit a key on the keyboard to exit >>>> the >>>> engine. If we want to put this process in the background, this >>>> isn't a >>>> feasible design obviously...so I was curious what people are >>>> doing to >>>> build an engine that can be set as a background process and then >>>> when >>>> brought back to the foreground, how is the engine being stopped >>>> elegantly so the appropriate logout and disconnect procedures occur? >>>> >>> I'd be intersted to hear how others approach this problem as well. >>> For >>> now, we create the socket initiator and FIX listenrers in Spring, and >>> then the main thread just goes to sleep (we do a new >>> Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if >>> you >>> run it on the console, or with an /etc/init.d script wrapping a 'kill >>> -9' on our virtual appliance. Here's the code for reference: >>> http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/ >>> src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 >>> >>> >>> -- >>> Toli Kuznets >>> http://www.marketcetera.com: Open-Source Trading Platform >>> download.run.trade. >>> >>> --------------------------------------------------------------------- >>> - >>> --- >>> 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: Steve B. <st...@te...> - 2007-04-27 05:17:07
|
> My guess is that it is because Oracle treats the empty string as NULL. > Try setting a session qualifier in your configuration to see if that > helps. Brad is correct. You'll need to remove the NOT NULL constraint on the session qualifier column since the value defaults to an empty string and Oracle will treat this as a NULL. |
|
From: Brad H. <Bra...@gb...> - 2007-04-26 22:18:55
|
Hi Rob, My guess is that it is because Oracle treats the empty string as NULL. Try setting a session qualifier in your configuration to see if that helps. =20 Regards, Brad. -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Robert Brueckmann Sent: Friday, 27 April 2007 12:24 AM To: qui...@li... Subject: [Quickfixj-users] jdbc logging QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ QuickFIX/J Support: http://www.quickfixj.org/support/ I have another question regarding jdbc logging. We use an oracle database. My dba set up all of the tables based on the sample SQL scripts for the mysql database. When I fire up the engine which is configured with one session, I get the following log output to the console: ------- beginning initiator... 2007-04-26 10:19:06,478 DEBUG [main] proxool.ShutdownHook (ShutdownHook.java:73) - Registered shutdownHook 2007-04-26 10:19:06,509 DEBUG [main] proxool.HouseKeeperController (HouseKeeperController.java:84) - Registering 'quickfixj-1' house keeper 2007-04-26 10:19:06,509 DEBUG [main] proxool.HouseKeeperController (HouseKeeperController.java:92) - Starting a house keeper thread 2007-04-26 10:19:06,697 DEBUG [main] proxool.ConnectionResetter (ConnectionResetter.java:168) - Remembering default value: isReadOnly() =3D false 2007-04-26 10:19:06,712 DEBUG [main] proxool.ConnectionResetter (ConnectionResetter.java:168) - Remembering default value: getHoldability() =3D 1 2007-04-26 10:19:06,728 DEBUG [main] proxool.ConnectionResetter (ConnectionResetter.java:168) - Remembering default value: getTransactionIsolation() =3D 2 2007-04-26 10:19:06,743 DEBUG [main] proxool.ConnectionResetter (ConnectionResetter.java:168) - Remembering default value: getTypeMap() =3D {SYS.XMLTYPE=3Dclass oracle.xdb.XMLTypeFactory} 2007-04-26 10:19:06,743 DEBUG [main] proxool.ConnectionResetter (ConnectionResetter.java:168) - Remembering default value: getCatalog() =3D null 2007-04-26 10:19:06,743 INFO [main] proxool.ConnectionPool (ConnectionPool.java:623) - Proxool statistics legend: "s - r (a/t/o)" > s=3Dserved, r=3Drefused (only shown if non-zero), a=3Dactive, = t=3Dtotal, o=3Doffline (being tested) 2007-04-26 10:19:06,743 DEBUG [main] proxool.Prototyper (Prototyper.java:204) - 000000 (01/01/00) - Connection #1 created on demand =3D ACTIVE 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.internal.ClientDataSupport 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.OracleConnection 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.internal.OracleConnection 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface java.sql.Connection 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.sql.ClobDBAccess 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.sql.BlobDBAccess 2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.sql.BfileDBAccess 2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface java.sql.Statement 2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.OracleStatement 2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.OraclePreparedStatement 2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface java.sql.PreparedStatement 2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.internal.OraclePreparedStatement 2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory (ProxyFactory.java:209) - Implementing interface oracle.jdbc.internal.OracleStatement quickfix.ConfigError: error during session initialization at quickfix.mina.initiator.AbstractSocketInitiator.createSessions(AbstractS ocketInitiator.java:132) at quickfix.mina.initiator.AbstractSocketInitiator.<init>(AbstractSocketIni tiator.java:73) at quickfix.mina.initiator.AbstractSocketInitiator.<init>(AbstractSocketIni tiator.java:65) at quickfix.ThreadedSocketInitiator.<init>(ThreadedSocketInitiator.java:32) at com.merlin.pb.fix.MerlinFIXInitiator.main(MerlinFIXInitiator.java:111) Caused by: java.lang.RuntimeException: java.sql.SQLException: ORA-01400: cannot insert NULL into ("FIX"."SESSIONS"."SESSION_QUALIFIER") at quickfix.JdbcStoreFactory.create(JdbcStoreFactory.java:44) at quickfix.Session.<init>(Session.java:270) at quickfix.DefaultSessionFactory.create(DefaultSessionFactory.java:152) at quickfix.mina.SessionConnector.createSession(SessionConnector.java:112) at quickfix.mina.initiator.AbstractSocketInitiator.createSessions(AbstractS ocketInitiator.java:126) ... 4 more Caused by: java.sql.SQLException: ORA-01400: cannot insert NULL into ("FIX"."SESSIONS"."SESSION_QUALIFIER") at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:12 5) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.jav a:182) at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStat ement.java:630) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement. java:1081) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrepare dStatement.java:2905) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStateme nt.java:2996) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100 ) at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java: 57) at $java.sql.Statement$$EnhancerByProxool$$a742985f.execute(<generated>) at quickfix.JdbcStore.loadCache(JdbcStore.java:130) at quickfix.JdbcStore.<init>(JdbcStore.java:65) at quickfix.JdbcStoreFactory.create(JdbcStoreFactory.java:42) ... 8 more 2007-04-26 10:19:08,993 DEBUG [ShutdownHook] proxool.ShutdownHook (ShutdownHook.java:93) - Running ShutdownHook 2007-04-26 10:19:08,993 INFO [Shutdown Hook] proxool.ConnectionPool (ConnectionPool.java:490) - Shutting down 'quickfixj-1' pool immediately [Shutdown Hook] 2007-04-26 10:19:09,009 DEBUG [Shutdown Hook] proxool.ConnectionPool (ConnectionPool.java:447) - 000001 (00/00/00) - #0001 removed because of shutdown. 2007-04-26 10:19:09,009 DEBUG [Shutdown Hook] proxool.ConnectionPool (ConnectionPool.java:553) - Connection #1 closed 2007-04-26 10:19:09,009 INFO [Shutdown Hook] proxool.ConnectionPool (ConnectionPool.java:570) - 'quickfixj-1' pool has been closed down by Shutdown Hook in 16 milliseconds. 2007-04-26 10:19:09,009 INFO [Shutdown Hook] proxool.PrototyperController (PrototyperController.java:100) - Stopping Prototyper thread 2007-04-26 10:19:09,009 INFO [Shutdown Hook] proxool.HouseKeeperController (HouseKeeperController.java:107) - Stopping HouseKeeper thread ----- Why is it trying to insert NULL initially in a column specifically set to NOT NULL? Is this JDBC logging just not compatible with an oracle back-end? We're using the latest oracle jdbc drivers and the latest release of the quickfix/j engine...any thoughts? Thanks, Rob Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single Strategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007 =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, distribution 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 through 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 solicitation or recommendation to buy or sell a particular security. ------------------------------------------------------------------------ - 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: Robert B. <rbr...@me...> - 2007-04-26 17:33:17
|
Awesome. Thanks guys for all your help! The JMX and jconsole suggestions were perfect and exactly what I was looking for. Much appreciated! Thanks, Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single S= trategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007 =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: Tommy H. <Tom...@Bo...> - 2007-04-26 17:05:36
|
BTW, another approach to question #3... Use RMI to expose methods to an external process. From there, you can write a simple application that can call these methods (performing whatever tasks you need). I guess another alternative would be to call the hooks in the management extensions if you only need those methods that have already bee exposed. You should also register a shutdown thread. This will get called when the Ctrl-C interrupt is passed to the JVM. You can gracefully close DB connections, files. etc. before you program is terminated. -Tommy On Apr 26, 2007, at 11:54 AM, Tommy Hannon wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > I just started developing with QuickFIX/J last week and am totally > delighted with the ease of use (kinda of like switching to a Mac). > > Most everything you need to manage the "grunt-work" of the protocol > is handled using the "Setting" file as described in the user manual. > Session level stuff, Logon/Logout, heartbeats, resends, all are > handled "under-the-hood" and need not be handled at your application > level code. IMHO, the greatest benefit to new users is the > management extensions. > > Just add a few lines of code to a Java 1.5 codebase and a system > property on the command line; start "jconsole" and connect! (Be sure > to start the console using the same user as your application if > running locally) From there the session attributes page is a real > help. you can view or update values on-the-fly. Go to the > "Operations" tab and you can reset, disconnect, logon, or logoff > individual sessions. > > In general this product is very is easy to use, almost beyond > belief. My suggestion would be to check out the "Creating Your > Application", "Receiving Messages" and "Sending Messages" sections of > the user manual paying attention to the "Most Type Safe" approach. > > Good luck! > > -Tommy > > On Apr 26, 2007, at 10:46 AM, Toli Kuznets wrote: > >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J Support: http://www.quickfixj.org/support/ >> Robert, >> >>> 1.) We plan on connecting to 4 end-points, so I have 4 sessions >>> in my >>> configuration file...is there a benefit to using the >>> ThreadedSocketInitiator as opposed to just the SocketInitiator? >> >> This is a classic trade-off. if you need all your incoming >> messages to >> be processed in order they are coming in across all connections, then >> use the regular SocketInitiator. >> If the 4 connections are totally unrelated then you can process them >> concurrently using the ThreadedSocketInitiator >> >>> >>> 2.) If one of our end-point's connection goes down indefinitely, >>> are >>> the remaining 3 sessions ok? Say one of the 4 end-points goes down >>> momentarily and then goes back up, will the engine reconnect or do I >>> have to bring the entire engine down and reconnect all 4 sessions? >> >> QFJ should reconnect to the lost connection when it comes back u and >> renegotiate a logon. >> there area various timeout settings you can tweak to modify the >> timeout behaviour. >> >>> 3.) Examples of the custom Initiator classes have a 'System.in' >>> statement waiting for a user to hit a key on the keyboard to exit >>> the >>> engine. If we want to put this process in the background, this >>> isn't a >>> feasible design obviously...so I was curious what people are >>> doing to >>> build an engine that can be set as a background process and then >>> when >>> brought back to the foreground, how is the engine being stopped >>> elegantly so the appropriate logout and disconnect procedures occur? >>> >> >> I'd be intersted to hear how others approach this problem as well. >> For >> now, we create the socket initiator and FIX listenrers in Spring, and >> then the main thread just goes to sleep (we do a new >> Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if >> you >> run it on the console, or with an /etc/init.d script wrapping a 'kill >> -9' on our virtual appliance. Here's the code for reference: >> http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/ >> src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 >> >> >> -- >> Toli Kuznets >> http://www.marketcetera.com: Open-Source Trading Platform >> download.run.trade. >> >> --------------------------------------------------------------------- >> - >> --- >> 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 > |
|
From: Tommy H. <Tom...@Bo...> - 2007-04-26 16:54:14
|
I just started developing with QuickFIX/J last week and am totally delighted with the ease of use (kinda of like switching to a Mac). Most everything you need to manage the "grunt-work" of the protocol is handled using the "Setting" file as described in the user manual. Session level stuff, Logon/Logout, heartbeats, resends, all are handled "under-the-hood" and need not be handled at your application level code. IMHO, the greatest benefit to new users is the management extensions. Just add a few lines of code to a Java 1.5 codebase and a system property on the command line; start "jconsole" and connect! (Be sure to start the console using the same user as your application if running locally) From there the session attributes page is a real help. you can view or update values on-the-fly. Go to the "Operations" tab and you can reset, disconnect, logon, or logoff individual sessions. In general this product is very is easy to use, almost beyond belief. My suggestion would be to check out the "Creating Your Application", "Receiving Messages" and "Sending Messages" sections of the user manual paying attention to the "Most Type Safe" approach. Good luck! -Tommy On Apr 26, 2007, at 10:46 AM, Toli Kuznets wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > Robert, > >> 1.) We plan on connecting to 4 end-points, so I have 4 sessions >> in my >> configuration file...is there a benefit to using the >> ThreadedSocketInitiator as opposed to just the SocketInitiator? > > This is a classic trade-off. if you need all your incoming messages to > be processed in order they are coming in across all connections, then > use the regular SocketInitiator. > If the 4 connections are totally unrelated then you can process them > concurrently using the ThreadedSocketInitiator > >> >> 2.) If one of our end-point's connection goes down indefinitely, are >> the remaining 3 sessions ok? Say one of the 4 end-points goes down >> momentarily and then goes back up, will the engine reconnect or do I >> have to bring the entire engine down and reconnect all 4 sessions? > > QFJ should reconnect to the lost connection when it comes back u and > renegotiate a logon. > there area various timeout settings you can tweak to modify the > timeout behaviour. > >> 3.) Examples of the custom Initiator classes have a 'System.in' >> statement waiting for a user to hit a key on the keyboard to exit the >> engine. If we want to put this process in the background, this >> isn't a >> feasible design obviously...so I was curious what people are doing to >> build an engine that can be set as a background process and then when >> brought back to the foreground, how is the engine being stopped >> elegantly so the appropriate logout and disconnect procedures occur? >> > > I'd be intersted to hear how others approach this problem as well. For > now, we create the socket initiator and FIX listenrers in Spring, and > then the main thread just goes to sleep (we do a new > Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if you > run it on the console, or with an /etc/init.d script wrapping a 'kill > -9' on our virtual appliance. Here's the code for reference: > http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/ > src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 > > > -- > Toli Kuznets > http://www.marketcetera.com: Open-Source Trading Platform > download.run.trade. > > ---------------------------------------------------------------------- > --- > 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-04-26 16:12:12
|
> I'd be intersted to hear how others approach this problem as well. For > now, we create the socket initiator and FIX listenrers in Spring, and > then the main thread just goes to sleep (we do a new > Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if you > run it on the console, or with an /etc/init.d script wrapping a 'kill > -9' on our virtual appliance. Here's the code for reference: Another way to do this is to create a simple custom JMX MBean that shutdowns the connectors (acceptors and initiators)and other resources and then exits the process. You could use any JMX-enabled tool to stop the process that way (including Java command line programs). |
|
From: Toli K. <to...@ma...> - 2007-04-26 15:46:29
|
Robert, > 1.) We plan on connecting to 4 end-points, so I have 4 sessions in my > configuration file...is there a benefit to using the > ThreadedSocketInitiator as opposed to just the SocketInitiator? This is a classic trade-off. if you need all your incoming messages to be processed in order they are coming in across all connections, then use the regular SocketInitiator. If the 4 connections are totally unrelated then you can process them concurrently using the ThreadedSocketInitiator > > 2.) If one of our end-point's connection goes down indefinitely, are > the remaining 3 sessions ok? Say one of the 4 end-points goes down > momentarily and then goes back up, will the engine reconnect or do I > have to bring the entire engine down and reconnect all 4 sessions? QFJ should reconnect to the lost connection when it comes back u and renegotiate a logon. there area various timeout settings you can tweak to modify the timeout behaviour. > 3.) Examples of the custom Initiator classes have a 'System.in' > statement waiting for a user to hit a key on the keyboard to exit the > engine. If we want to put this process in the background, this isn't a > feasible design obviously...so I was curious what people are doing to > build an engine that can be set as a background process and then when > brought back to the foreground, how is the engine being stopped > elegantly so the appropriate logout and disconnect procedures occur? > I'd be intersted to hear how others approach this problem as well. For now, we create the socket initiator and FIX listenrers in Spring, and then the main thread just goes to sleep (we do a new Semaphore(0).wait()). The OMS is then killed by pressing Ctrl-C if you run it on the console, or with an /etc/init.d script wrapping a 'kill -9' on our virtual appliance. Here's the code for reference: http://trac.marketcetera.org/trac.fcgi/browser/platform/trunk/oms/src/main/java/org/marketcetera/oms/OrderManagementSystem.java#L59 -- Toli Kuznets http://www.marketcetera.com: Open-Source Trading Platform download.run.trade. |
|
From: Robert B. <rbr...@me...> - 2007-04-26 14:24:01
|
I have another question regarding jdbc logging. We use an oracle
database. My dba set up all of the tables based on the sample SQL
scripts for the mysql database. When I fire up the engine which is
configured with one session, I get the following log output to the
console:
-------
beginning initiator...
2007-04-26 10:19:06,478 DEBUG [main] proxool.ShutdownHook
(ShutdownHook.java:73) - Registered shutdownHook
2007-04-26 10:19:06,509 DEBUG [main] proxool.HouseKeeperController
(HouseKeeperController.java:84) - Registering 'quickfixj-1' house keeper
2007-04-26 10:19:06,509 DEBUG [main] proxool.HouseKeeperController
(HouseKeeperController.java:92) - Starting a house keeper thread
2007-04-26 10:19:06,697 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value: isReadOnly()
=3D false
2007-04-26 10:19:06,712 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value:
getHoldability() =3D 1
2007-04-26 10:19:06,728 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value:
getTransactionIsolation() =3D 2
2007-04-26 10:19:06,743 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value: getTypeMap()
=3D {SYS.XMLTYPE=3Dclass oracle.xdb.XMLTypeFactory}
2007-04-26 10:19:06,743 DEBUG [main] proxool.ConnectionResetter
(ConnectionResetter.java:168) - Remembering default value: getCatalog()
=3D null
2007-04-26 10:19:06,743 INFO [main] proxool.ConnectionPool
(ConnectionPool.java:623) - Proxool statistics legend: "s - r (a/t/o)"
> s=3Dserved, r=3Drefused (only shown if non-zero), a=3Dactive, t=3Dtotal,
o=3Doffline (being tested)
2007-04-26 10:19:06,743 DEBUG [main] proxool.Prototyper
(Prototyper.java:204) - 000000 (01/01/00) - Connection #1 created on
demand =3D ACTIVE
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.ClientDataSupport
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.OracleConnection
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.OracleConnection
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface java.sql.Connection
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface oracle.sql.ClobDBAccess
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface oracle.sql.BlobDBAccess
2007-04-26 10:19:06,993 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.sql.BfileDBAccess
2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface java.sql.Statement
2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.OracleStatement
2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.OraclePreparedStatement
2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
java.sql.PreparedStatement
2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.OraclePreparedStatement
2007-04-26 10:19:08,243 DEBUG [main] proxool.ProxyFactory
(ProxyFactory.java:209) - Implementing interface
oracle.jdbc.internal.OracleStatement
quickfix.ConfigError: error during session initialization
at
quickfix.mina.initiator.AbstractSocketInitiator.createSessions(AbstractS
ocketInitiator.java:132)
at
quickfix.mina.initiator.AbstractSocketInitiator.<init>(AbstractSocketIni
tiator.java:73)
at
quickfix.mina.initiator.AbstractSocketInitiator.<init>(AbstractSocketIni
tiator.java:65)
at
quickfix.ThreadedSocketInitiator.<init>(ThreadedSocketInitiator.java:32)
at
com.merlin.pb.fix.MerlinFIXInitiator.main(MerlinFIXInitiator.java:111)
Caused by: java.lang.RuntimeException: java.sql.SQLException: ORA-01400:
cannot insert NULL into ("FIX"."SESSIONS"."SESSION_QUALIFIER")
at quickfix.JdbcStoreFactory.create(JdbcStoreFactory.java:44)
at quickfix.Session.<init>(Session.java:270)
at
quickfix.DefaultSessionFactory.create(DefaultSessionFactory.java:152)
at
quickfix.mina.SessionConnector.createSession(SessionConnector.java:112)
at
quickfix.mina.initiator.AbstractSocketInitiator.createSessions(AbstractS
ocketInitiator.java:126)
... 4 more
Caused by: java.sql.SQLException: ORA-01400: cannot insert NULL into
("FIX"."SESSIONS"."SESSION_QUALIFIER")
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:12
5)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.jav
a:182)
at
oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStat
ement.java:630)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.
java:1081)
at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrepare
dStatement.java:2905)
at
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStateme
nt.java:2996)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100
)
at
org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:
57)
at
$java.sql.Statement$$EnhancerByProxool$$a742985f.execute(<generated>)
at quickfix.JdbcStore.loadCache(JdbcStore.java:130)
at quickfix.JdbcStore.<init>(JdbcStore.java:65)
at quickfix.JdbcStoreFactory.create(JdbcStoreFactory.java:42)
... 8 more
2007-04-26 10:19:08,993 DEBUG [ShutdownHook] proxool.ShutdownHook
(ShutdownHook.java:93) - Running ShutdownHook
2007-04-26 10:19:08,993 INFO [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:490) - Shutting down 'quickfixj-1' pool immediately
[Shutdown Hook]
2007-04-26 10:19:09,009 DEBUG [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:447) - 000001 (00/00/00) - #0001 removed because of
shutdown.
2007-04-26 10:19:09,009 DEBUG [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:553) - Connection #1 closed
2007-04-26 10:19:09,009 INFO [Shutdown Hook] proxool.ConnectionPool
(ConnectionPool.java:570) - 'quickfixj-1' pool has been closed down by
Shutdown Hook in 16 milliseconds.
2007-04-26 10:19:09,009 INFO [Shutdown Hook]
proxool.PrototyperController (PrototyperController.java:100) - Stopping
Prototyper thread
2007-04-26 10:19:09,009 INFO [Shutdown Hook]
proxool.HouseKeeperController (HouseKeeperController.java:107) -
Stopping HouseKeeper thread
-----
Why is it trying to insert NULL initially in a column specifically set
to NOT NULL? Is this JDBC logging just not compatible with an oracle
back-end? We're using the latest oracle jdbc drivers and the latest
release of the quickfix/j engine...any thoughts?
Thanks,
Rob
Merlin Securities - #1 Prime Broker North America, #1 Prime Broker Single S=
trategy Funds, #1 Prime Broker Funds Under $100M - Global Custodian 2007
=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.
|