thrift java first demo
参考文档:http://thrift.apache.org/
1.下载需要的文件
地址:http://thrift.apache.org/download 需要下载
2. 下载.thrift文件
- shared.thrift: https://github.com/apache/thrift/blob/master/tutorial/shared.thrift
- tutorial.thrift: https://github.com/apache/thrift/blob/master/tutorial/tutorial.thrift
3. 生成.java文件
进入thrift-0.12.0.exe所在目录,输入命令:
1 | thrift -r --gen java tutorial.thrift |
产生文件夹 gen-Java文件夹,里面包含两个文件夹shared和tutorial。将文件夹移动至我们工程的src/main/java目录下。
4. 新建Maven工程,dependency里增加
1 2 3 4 5 | <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId> <version>0.12.0</version> </dependency> |
5. client & server & CalculatorHandler
文件内容来自:http://thrift.apache.org/tutorial/java
将JavaClient.java和JavaServer.java放在src/main/java下。此时目录结构如下:
6. 运行JavaServer的main函数
报错:
1 2 3 4 5 6 7 8 9 10 11 | Starting the simple server... org.apache.thrift.transport.TTransportException: Error creating the transport at org.apache.thrift.transport.TSSLTransportFactory.createSSLContext(TSSLTransportFactory.java:) at org.apache.thrift.transport.TSSLTransportFactory.getServerSocket(TSSLTransportFactory.java:) at server.JavaServer.secure(JavaServer.java:) at server.JavaServer$.run(JavaServer.java:) at java.lang.Thread.run(Thread.java:) Caused by : java.io.IOException: Could not load file: ../../lib/java/test/.keystore at org.apache.thrift.transport.TSSLTransportFactory.getStoreAsStream(TSSLTransportFactory.java:) at org.apache.thrift.transport.TSSLTransportFactory.createSSLContext(TSSLTransportFactory.java:) ... more |
原因是secure模式需要有密钥,代码里需将名为.keystore的密钥放在../../lib/java/test目录下。如果使用simple模式,则不需要。于是,我修改了JavaServer.java代码,将new Thread(secure).start(); 注释掉了,再次启动,未报错。
7. 运行JavaClient的main函数
指明使用simple模式运行。
8. 运行结果
客户端:
1 2 3 4 5 6 7 | ping() 1+1=2 Invalid operation: Cannot divide by 0 15-10=5 Check log: 5 Process finished with exit code 0 |
服务端:
1 2 3 4 5 6 | Starting the simple server... ping() add(1,1) calculate(1, {DIVIDE,1,0}) calculate(1, {SUBTRACT,15,10}) getStruct(1) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步