用brew安装brewinstallbisonbrewinstallthriftjava实例创建thrift接口声明文件 创建一个服务TesterService,创建文件TesterService。thriftnamespacejavacom。mitsuhide。service。implserviceTesterService{stringsayHello(1:stringname)} 定义一个名为sayHello方法,入参返回值都是string类型根据thrift接口声明文件,生成客户端、服务器java代码实现 终端进入TesterService。thrift所在目录,执行命令thriftrgenjavaTesterService。thrift 当前目录下多了一个genjava目录,里面有一个TesterService。java文件 这个java文件包含TesterService服务接口定义Hello。Iface,及服务调用底层通信细节,包括客户端调用逻辑TesterService。Client及服务端处理逻辑TesterService。Processor 把TesterService。java文件,拷贝到客户端、服务器工程,之后调用和接收请求需要用客户端、服务器maven引入thrift依赖 客户端和服务端都添加thrift依赖:dependencygroupIdorg。apache。thriftgroupIdlibthriftartifactIdversion0。15。0versiondependency服务器实现thrift生成的业务接口逻辑 服务端创建TestServiceImpl实现TesterService。Iface接口publicclassTestServiceImplimplementsTestThriftService。Iface{OverridepublicStringsayHello(Stringname)throwsTException{returnhelloname,getAString();}}服务器开启监听 随便找个类执行main函数,创建服务端实现代码,把HelloServiceImpl作为一个具体处理器传给Thrift服务器publicclassTestServiceImplimplementsTestThriftService。Iface{publicstaticvoidmain(String〔〕args){try{log。info(服务端开启。。。。);TProcessortprocessornewTestThriftService。ProcessorTestThriftService。Iface(newTestServiceImpl());简单的单线程服务模型TServerSocketserverTransportnewTServerSocket(9898);TServer。ArgstArgsnewTServer。Args(serverTransport);tArgs。processor(tprocessor);tArgs。protocolFactory(newTBinaryProtocol。Factory());TServerservernewTSimpleServer(tArgs);server。serve();}catch(TTransportExceptione){e。printStackTrace();}}}客户端调用服务器 客户端实现代码TestServiceImpl,调用TestThriftService。client访问服务端逻辑实现publicclassTestServiceImplimplementsTestService{publicTestServiceImpl(){log。info(inTestServiceconstruct);}publicstaticvoidmain(String〔〕args){log。info(客户端启动。。。。);TTtry{transportnewTSocket(127。0。0。1,9898);协议要和服务端一致TProtocolprotocolnewTBinaryProtocol(transport);TestThriftService。ClientclientnewTestThriftService。Client(protocol);transport。open();Stringresultclient。sayHello(啦啦啦);log。info(result);}catch(TTransportExceptione){e。printStackTrace();}catch(TExceptione){e。printStackTrace();}finally{if(null!transport){transport。close();}}}}