problem arise in communicating acceptor and initiator

Imported from previous forum

hi ,
i am new to Fix protocol.i face one problem while communicating initiator and acceptor programs.initially i receive the data from keyborad.that data will be send it to acceptor program.data willbe send successfully.now the problem comes i am not receving the response from acceptor.here exception arises.i am sending my sample code.pls check it.and suggest me .
here is my sample code

acceptor program

import biz.onixs.fixforge.engine.*;
import static biz.onixs.fixforge.engine.FIX42.Tag;
import biz.onixs.fixforge.engine.util.PropertyBasedSettings;

import java.util.concurrent.CountDownLatch;

/**

  • Processes incoming messages.
    */
    public class s2 implements Session.InboundApplicationMsgEventHandler,Session.StateChangeEventHandler,
    Session.ErrorEventHandler, Session.WarningEventHandler {
    CountDownLatch disconnectedEventLatch = new CountDownLatch(1);
    int orderCounter;
    Version fixversion;
    void run() {
    try {
    Engine.init(4000);
    fixversion = Version.getByNumber(“4.2”);
    Session sn = new Session(“2”,“1”,fixversion);
    sn.setInboundApplicationMsgEventHandler(this);
    sn.setStateChangeEventHandler(this);
    sn.setErrorEventHandler(this);
    sn.setWarningEventHandler(this);
    sn.logonAsAcceptor();
    System.out.println(“Awaiting session-initiator…”);
    disconnectedEventLatch.await();
    } catch (Exception ex) {
    System.out.println("Exception: " + ex);
    }
    }
    public void onInboundApplicationMsg(Object sender, Session.InboundApplicationMsgEventArgs e) {
    System.out.println(“Incoming application-level message:\n” + e.getMsg());
    try {
    e.getMsg().validate();
    Message reply = null;
    if (e.getMsg().getType().equals(“D”)) {
    ++orderCounter;
    Message order = e.getMsg();
    Message execReport = new Message(“8”, fixversion);
    execReport.set(Tag.OrderID, order.get(Tag.ClOrdID));
    execReport.set(Tag.ExecID, “ExecID_” + orderCounter);
    execReport.set(Tag.ExecTransType, “0”); // New
    execReport.set(Tag.OrdStatus, “0”); // New
    execReport.set(Tag.Symbol, order.get(Tag.Symbol));
    execReport.set(Tag.Side, order.get(Tag.Side));
    execReport.set(Tag.OrderQty, order.get(Tag.OrderQty));
    execReport.set(Tag.CumQty, order.get(Tag.OrderQty));
    execReport.set(Tag.OrdType, order.get(Tag.OrdType));
    //execReport.set(Tag.Shares,order.get(Tag.Shares));
    /execReport.set(Tag.Username,order.get(Tag.Username));
    execReport.set(Tag.Password,order.get(Tag.Password));
    /
    execReport.set(Tag.AvgPx, “100.0”);
    execReport.set(Tag.TransactTime, order.get(Tag.TransactTime));
    reply = execReport;
    System.out.println(“i am in if”);
    } else {
    System.out.println(“i am i else”);
    Message email = new Message(“C”, fixversion);
    email.set(Tag.EmailType, “0”);
    /Group group = email.setGroup(Tag.NoLinesOfText, 1);
    group.set(Tag.Text, 0, “The message with MsgType=” + e.getMsg().get(Tag.MsgType) + " was sent to the client");
    /
    reply = email;
    }
    Session sn = (Session) sender;
    System.out.println(“am i reaching here”);
    sn.send(reply);
    System.out.println(“am i reaching here”);
    System.out.println(“Sent to the counterparty:\n” + reply);
    } catch (Exception ex) {
    System.out.println(ex);
    System.out.println(“i am in catch”);
    Message email = new Message(“C”, fixversion);
    email.set(Tag.EmailType, “0”);
    /*Group group = email.setGroup(Tag.NoLinesOfText, 1);

         final String errorMsg = "Exception during the processing of incoming message: " + ex;
    
         group.set(Tag.Text, 0, errorMsg);
    
         Session sn = (Session) sender;
         sn.send(email);
    
         System.out.println(errorMsg);*/
     }
    

    }
    public void onStateChange(Object sender, Session.StateChangeEventArgs e) {
    System.out.println("New session state: " + e.getNewState());
    if (e.getNewState() == Session.SessionState.DISCONNECTED) {
    disconnectedEventLatch.countDown();
    }
    }

    public void onError(Object sender, Session.ErrorEventArgs e) {
    System.out.println("Error condition: " + e);
    }

    public void onWarning(Object sender, Session.WarningEventArgs e) {
    System.out.println("Warning condition: " + e);
    }

    public static void main(String[] args) {
    s2 ser = new s2();
    ser.run();
    }
    }

now initiator program

import biz.onixs.fixforge.engine.Session;
import biz.onixs.fixforge.engine.Message;
import biz.onixs.fixforge.engine.Engine;
import biz.onixs.fixforge.engine.Version;
import biz.onixs.fixforge.engine.util.PropertyBasedSettings;
import static biz.onixs.fixforge.engine.FIX42.Tag;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class c2 implements Session.InboundApplicationMsgEventHandler,Session.StateChangeEventHandler
{ Message order;
void shore()
{BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String st=null;
try
{
Engine engine =Engine.init();
Version fixversion=Version.getByNumber(“4.2”);
Session sn=new Session(“1”,“2”,fixversion);
sn.setInboundApplicationMsgEventHandler(this);
sn.setStateChangeEventHandler(this);
sn.logonAsInitiator(“localhost”,4000);
System.out.println(“kishore”);
order = new Message(“D”,fixversion);
order.set(Tag.HandlInst, “1”);
order.set(Tag.ClOrdID, “Unique identifier for Order”);
System.out.println(“Enter Company Symbol”);
st=br.readLine();
order.set(Tag.Symbol,st);
System.out.println(“Enter tag side(1 or 2)”);
st=br.readLine();
order.set(Tag.Side,st);
order.set(Tag.OrderQty, 1000);
System.out.println(“Enter orfder Type”);
st=br.readLine();
order.set(Tag.OrdType,st);
order.set(Tag.TransactTime,100);
//order.set(Tag.Shares,100);
sn.send(order);
System.out.println(“hi welcome to fix protocol”);
/order.set(Tag.Username, “kishore”);
order.set(Tag.Password, “kumar”);
/
System.out.println(“The order (” + order + “) was sent”);

        System.out.println("\nPress 'Enter' to disconnect the sesssion and terminate the application.\n");
        (new BufferedReader(new InputStreamReader(System.in))).readLine();
        sn.logout("The session is disconnected by BuySide");
        sn.dispose(false); // 'true' - to terminate the FIX session, 'false' - to keep sequence numbers.

        engine.shutdown();
    } catch (Exception ex) {
        System.out.println("Exception: " + ex);
    }
}

public void onInboundApplicationMsg(Object sender, Session.InboundApplicationMsgEventArgs e) {
try{
System.out.println(“Incoming application-level message:\n” + e.getMsg());

String ClOrdID = order.get(35);
System.out.println(ClOrdID);
String side= order.get(54);
System.out.println(side);
if(side.equals(“1”))
{
System.out.println(“users choice is to buy”);

} else if(side.equals(“2”))
{
System.out.println(“users choice is sell”);
}
String symbol= order.get(55);
System.out.println(symbol);

String shares=order.get(53);
System.out.println(shares);
System.out.println(" Processing of the application-level incoming message …");
}catch(Exception e1){System.out.println(e1);}
}

public void onStateChange(Object sender, Session.StateChangeEventArgs e) {
    System.out.println("New session state: " + e.getNewState());
}

public static void main(String[] args) {
  c2 fix = new c2();
    fix.shore();
}

}

Thanks&Regards
kishore

kishore,

What exception are you getting ? Please post further details of the exception.

Regards,
K. Mahesh

hi , i am new to Fix protocol.i face one problem while communicating
initiator and acceptor programs.initially i receive the data from
keyborad.that data will be send it to acceptor program.data willbe send
successfully.now the problem comes i am not receving the response from
acceptor.here exception arises.i am sending my sample code.pls check
it.and suggest me . here is my sample code

Thanks&Regards kishore