栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

可以从现有的Java / scala接口和数据类型生成.thrift文件吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

可以从现有的Java / scala接口和数据类型生成.thrift文件吗?

您可以使用Swift。

使长话短说;
注释您的类和接口(用Thrift的话来说就是结构和服务)。然后,您可以运行Swift的客户端/服务器代码,也可以使用swift2thrift生成器生成等效的IDL,并使用Thrift编译器生成客户端(后者是我建议的描述对象)。

一旦完成创建可在TServlet中与常规TProtocol /
TTransport对象一起使用的TProcessor的操作,请在servlet的init()中执行以下操作:

protected void addProcessor(String name, Object svc) {    ThriftCodecManager precManager = new ThriftCodecManager(        new CompilerThriftCodecFactory(false)    );    List<ThriftEventHandler> eventList = Collections.emptyList();    ThriftServiceProcessor proc = new ThriftServiceProcessor(precManager, eventList, svc);    this.processors.put(name, proc);    this.multiplex.registerProcessor(name, NiftyProcessorAdapters.processorToTProcessor(proc));}

此示例中的Multiplex实例变量是

TMultiplexedProcessor
from 的实例
libthrift.jar

然后只需在您的doPost()中执行以下操作:

@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {    getServletContext().log("entering doPost()");    TTransport inTransport = null;    TTransport outTransport = null;    try {        InputStream in = request.getInputStream();        OutputStream out = response.getOutputStream();        TTransport transport = new TIOStreamTransport(in, out);        inTransport = transport;        outTransport = transport;        TProtocol inProtocol = getInProtocolFactory().getProtocol(inTransport);        TProtocol outProtocol = getOutProtocolFactory().getProtocol(outTransport);        if (multiplex.process(inProtocol, outProtocol)) { out.flush();        } else { throw new ServletException("multiplex.process() returned false");        }    } catch (TException te) {        throw new ServletException(te);    } finally {        if (inTransport != null) { inTransport.close();        }        if (outTransport != null) { outTransport.close();        }    }}

仅供参考-TJSONProtocol不适用于0.14之前的Swift版本,因此如果您需要使用TJSONProtocol,则需要从源代码进行构建。

另外… Swift强制标记您的结构

final

JPA规范说实体不能
final
…似乎无论如何都可以与Eclipselink一起使用,但是YMMV



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431156.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号