Server code:
            TMultiplexedProcessor processor = new TMultiplexedProcessor();
            processor.registerProcessor(
                "AddService",
                new AddService.Processor(new AddHandler()));
            processor.registerProcessor(
                "MultiplyService",
                new MultiplyService.Processor(new MultiplyHandler()));
            TServerTransport serverTransport = new TServerSocket(7911);
            TSimpleServer server = new TSimpleServer(new TSimpleServer.Args(serverTransport).
                   processor(processor));
            System.out.println("Starting server on port 7911 ...");
            server.serve();
Client Code:
    TFramedTransport transport;
   transport = new TFramedTransport(new TSocket("localhost", 7911));  
   transport.open();  
   TProtocol protocol = new TBinaryProtocol(transport);
   System.out.println("1");
   TMultiplexedProtocol mp = new TMultiplexedProtocol(protocol, "AddService");
   AddService.Client service = new AddService.Client(mp);
   System.out.println("2");
   TMultiplexedProtocol mp2 = new TMultiplexedProtocol(protocol, "MultiplyService");
   MultiplyService.Client service2 = new MultiplyService.Client(mp2);
   System.out.println("3");
   System.out.println(service.add(2,2));
   System.out.println(service2.multiply(2000,200));
But when I am running the server(listening on port 7911) and the client, the client doesnt process the last two calls to the add/multiply functions.
I could debug that the arguments have been sent to the server, but the server is not able to process them.
Any pointers as to what i am missing?
Apache Thrift allows you to define data types and service interfaces in a simple definition file. Taking that file as input, the compiler generates code to be used to easily build RPC clients and servers that communicate seamlessly across programming languages.
gRPC shares a lot of similarities with Thrift. Instead of using Thrift's interface definition language, gRPC uses protocol buffers. Instead of having a modular transport mechanism, gRPC uses HTTP/2.
Not tested, but it looks very much like as if you run two different protocol stacks on server and client. Try this:
TMultiplexedProcessor processor = new TMultiplexedProcessor();
processor.registerProcessor(
    "AddService",
    new AddService.Processor(new AddHandler()));
processor.registerProcessor(
    "MultiplyService",
    new MultiplyService.Processor(new MultiplyHandler()));
TServerTransport serverTransport = new TServerSocket(7911);
TTransportFactory factory = new TFramedTransport.Factory();
TServer.Args args = new TServer.Args(serverTransport);
args.processor(processor);
args.transportFactory(factory);
TSimpleServer server = new TSimpleServer(args);
System.out.println("Starting server on port 7911 ...");
server.serve();
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With