title: FIX:How to send ,messages using FIX ,quickfixj
body: <pre><code># Here is my settings.cfg file:
  # Thank you.Here is what i tried.My settings.cfg file
  
  [DEFAULT]
  # Settings which apply to all the Sessions.
  ConnectionType=initiator
  LogonTimeout=30
  ReconnectInterval=20
  ResetOnLogon=Y
  FileLogPath=C:\Work\QuickFIXJ\logs
  FileStorePath=C:\Work\QuickFIXJ\logs
  
  [SESSION]
  # Settings specifically for one session
  BeginString=FIX.4.4
  SenderCompID=XYZ
  TargetCompID=TYZ
  TimeZone=Asia/Tokyo
  StartTime=16:00:00
  EndTime=13:30:00
  HeartBtInt=60
  SocketConnectPort=7200
  SocketConnectHost=123.123.123.123
  UseDataDictionary=Y
  DataDictionary=C:\Work\QuickFIXJ\datadictionary\FIX44.xml
  
  [GATEWAY]
  Port=4444
  
  [TRANSPORT]
  Port=4444
  </code></pre>
  
  <p>and then</p>
  
  <pre><code>//initiator code:
  
  public class TestQuickFixJConnectivity {
      public static void main(String[] args) {
          SocketInitiator socketInitiator = null;
          try {
              SessionSettings sessionSettings = new SessionSettings("C:\\Work\\QuickFixJ\\sessionSettings.txt");
              Application application = new TestApplicationImpl();
              FileStoreFactory fileStoreFactory = new FileStoreFactory(sessionSettings);
              FileLogFactory logFactory = new FileLogFactory(sessionSettings);
              MessageFactory messageFactory = new DefaultMessageFactory();
              socketInitiator = new SocketInitiator(application,
                      fileStoreFactory, sessionSettings, logFactory,
                      messageFactory);
              socketInitiator.start();
              SessionID sessionId = socketInitiator.getSessions().get(0);
              sendLogonRequest(sessionId);
              int i = 0;
              do {
                  try {
                      Thread.sleep(1000);
                      System.out.println(socketInitiator.isLoggedOn());
                  } catch (InterruptedException e) {
                      e.printStackTrace();
                  }
                  i++;
              } while ((!socketInitiator.isLoggedOn()) &amp;&amp; (i &lt; 30));
          } catch (ConfigError e) {
              e.printStackTrace();
          } catch (SessionNotFound e) {
              e.printStackTrace();
          } catch (Exception exp) {
              exp.printStackTrace();
          } finally {
              if (socketInitiator != null) {
                  socketInitiator.stop(true);
              }
          }
      }
  
      private static void sendLogonRequest(SessionID sessionId) throws SessionNotFound {
          Logon logon = new Logon();
          Message msg=new Message();
          Header header = msg.getHeader();
          logon.set(new HeartBtInt(60));
          logon.set(new ResetSeqNumFlag(true));
          header.setField(new BeginString("FIX.4.4"));
          header.setField(new MsgType("AP"));
          header.setField(new SenderCompId("XYZ"));
          header.setField(new TagetCompId("TYZ"));
          header.setField(new ResetSeqNumFlag(true));
          //here i m setting all the fields in the csv report .
          msg.setField(705,new SortQty(""));
          // ....
          //below statement returning false
          boolean sent = Session.sendToTarget(msg, sessionId);
          System.out.println("Logon Message Sent : " + sent);
      }
  }
  </code></pre>
  
  <p>Please find my observations below:   </p>
  
  <p>In the event logs I am seeing as Created session: and the message which I am trying to send. Also I could see that the sender sequence number is getting incremented in the logs.</p>
  
  <p>Messages.log and header.logs are blank and body.log has the message which i am trying to send.</p>
  
  <p>Also onCreate and ToApp are being called when I try to run the code.</p>
  
  <p>I want to know whether i have sent the message successfully ?</p>
  
  <p>Also <code>boolean sent = Session.sendToTarget(msg, sessionId); is returning false</code>.</p>
  
  <p>I don't see ToAdmin and FromAdmin being executed in my code. Also Do I need to write the acceptor code as well for the same, or just the initiator code will be fine. The DataDictionary which i am using has all the fields set, but I am not sure whether its being used by QuickFixJ when i try to execute the code.</p>
  
  <p>Please advise whats going wrong in this?</p>