Version 4.11.0
Onix Solutions CME Drop Copy Handler for Java is a Java library that provides an access to the CME Group Drop Copy services using FIX Protocol.
High-level Java API allows to build applications rapidly to get drop copy data without much involving into raw protocol specifics.
CME Drop Copy Handler implementations features include:
All Handler classes are encapsulated into the biz.onixs.cme.dropcopy.handler package.
The typical way of using the Handler is as follows:
biz.onixs.cme.dropcopy.handler.Handler.setLicenseDirectory
static method.biz.onixs.cme.dropcopy.handler.Handler.setLogDirectory
static method.biz.onixs.cme.dropcopy.handler.Handler
class.biz.onixs.cme.dropcopy.handler.Handler.setErrorListener
method.biz.onixs.cme.dropcopy.handler.Handler.setWarningListener
method.biz.onixs.cme.dropcopy.handler.Handler.setHandlerListener
method.biz.onixs.cme.dropcopy.handler.Handler.logon
method.biz.onixs.cme.dropcopy.handler.Handler.logout
method.biz.onixs.cme.dropcopy.handler.Handler.dispose
method.CME Globex implemented secure authentication for iLink and Drop Copy sessions on Convenience Gateway (CGW) and Market Segment Gateway (MSGW). The new logon procedure secures the client system logon with:
Customers must create secure key pairs for iLink and Drop Copy Sessions in the CME Customer Center.
Secure Logon procedure was implemented inside DropCopy Handler. To provide secure keys to DropCopy Handler please call one of Handler.logon() methods, which accepts accessKeyID and secretKey parameters.
Handler instance allows to connect to single segment only. To connect to multiple segments, there is need to create one handler instance for each segment. Please see the multisegment sample from installation package.
public class Sample { private void run() throws Exception { Handler handler1 = new Handler(senderCompId, targetCompId, senderSubId, targetSubId1, senderLocationId); handler1.setErrorListener(this); handler1.setWarningListener(this); handler1.setHandlerListener(this); handler1.logon(host1, port1, password); // Same SenderCompId and SenderSubId, but different TargetSubID Handler handler2 = new Handler(senderCompId, targetCompId, senderSubId, targetSubId2, senderLocationId); handler2.setErrorListener(this); handler2.setWarningListener(this); handler2.setHandlerListener(this); handler2.logon(host2, port2, password); } }
If connection to primary host has been dropped, CME allows to connect to a backup host:
public class Sample { private void run() throws Exception { Handler handler = new Handler(senderCompId, targetCompId, senderSubId, targetSubId, senderLocationId); handler.setErrorListener(this); handler.setWarningListener(this); handler.setHandlerListener(this); handler.logon(primary_host, port, accessKeyID, secretKey); // Some network or gateway failure occurs, so there is need to switch to backup host handler.logon(backup_host, port, accessKeyID, secretKey); } }
Handler supports using the Session Scheduler to connect to CME host automatically. The Scheduler support switching between primary and backup hosts.
public class Sample { private void run() throws Exception { final SessionScheduler sessionScheduler = new SessionScheduler(); sessionScheduler.start(); final SessionSchedule schedule = createSchedule(); final InitiatorConnection connection = new InitiatorConnection(); connection.setInitiatorConnectionListener(handler); // This is required to process switching between primary and backup hosts correctly. final InetSocketAddress primaryAddress = InetSocketAddress.createUnresolved(host, port); connection.addAddress(primaryAddress); final InetSocketAddress backupAddress = InetSocketAddress.createUnresolved(backupHost, backupPort); connection.addAddress(backupAddress); Message customLogon = handler.createLogonMessage(accessKeyID, secretKey); connection.setCustomLogonMessage(customLogon.toString()); sessionScheduler.register(handler.getSession(), schedule, connection); } }
By default, Handler logs all important aspects of its activity while processing market data. The SLF4J (Simple Logging Facade for Java) is used by Handler internally. The SLF4J detects and uses the concrete logging implementation configured by user. By default, the Logback logging implementation is recommended.
The Logback (or any other logging implementation) must be configured at the beginning of the application. The examples of Logback configuration can be found in the Handler samples. The details of Logback configuration can be found here.
By default, logging is configured to log only errors and warnings. This is an example of logback.xml where detailed logging was switched on:
<logger name="biz.onixs.cme.stp.handler.sample" level="DEBUG"/>
<logger name="biz.onixs.cme.stp.handler" level="INFO"/>
<logger name="biz.onixs.cme.stp.handler.Session.Messages" level="INFO"/>