您可以使用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实例变量是
TMultiplexedProcessorfrom 的实例
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



