namespace java co.example.thrift service Calculator { i32 add(1:i32 num1, 2:i32 num2), i32 subtract(1:i32 num1, 2:i32 num2), i32 multiply(1:i32 num1, 2:i32 num2), double divide(1:i32 num1, 2:i32 num2) } thrift -gen java calculator.thrift package co.example.thrift; public class CalculatorHandler implements Calculator.Iface { public int add(int num1, int num2) { return num1 + num2; } public int subtract(int num1, int num2) { return num1 - num2; } public int multiply(int num1, int num2) { return num1 * num2; } public double divide(int num1, int num2) { if (num2 == 0) { throw new InvalidParameterException("Division by zero"); } return (double) num1 / num2; } } package co.example.thrift; import org.apache.thrift.TProcessor; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.server.TServer; import org.apache.thrift.server.TThreadPoolServer; import org.apache.thrift.transport.TServerSocket; import org.apache.thrift.transport.TServerTransport; public class CalculatorServer { public static void main(String[] args) { try { TServerTransport serverTransport = new TServerSocket(9090); CalculatorHandler handler = new CalculatorHandler(); TProcessor processor = new Calculator.Processor<>(handler); TServer server = new TThreadPoolServer(new TThreadPoolServer.Args(serverTransport).processor(processor)); System.out.println("Starting the Calculator server..."); server.serve(); } catch (Exception e) { e.printStackTrace(); } } } javac -cp .:thrift-0.13.0/lib/* co/example/thrift/*.java java -cp .:thrift-0.13.0/lib/* co.example.thrift.CalculatorServer package co.example.thrift; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.transport.TSocket; import org.apache.thrift.transport.TTransport; public class CalculatorClient { public static void main(String[] args) { try { TTransport transport = new TSocket("localhost", 9090); transport.open(); TBinaryProtocol protocol = new TBinaryProtocol(transport); Calculator.Client client = new Calculator.Client(protocol); int sum = client.add(5, 10); System.out.println("5 + 10 = " + sum); double quotient = client.divide(12, 4); System.out.println("12 / 4 = " + quotient); transport.close(); } catch (Exception e) { e.printStackTrace(); } } } javac -cp .:thrift-0.13.0/lib/* co/example/thrift/*.java java -cp .:thrift-0.13.0/lib/* co.example.thrift.CalculatorClient


上一篇:
下一篇:
切换中文