将服务器播放为节俭端点?

Posted

技术标签:

【中文标题】将服务器播放为节俭端点?【英文标题】:Play server as a thrift endpoint? 【发布时间】:2011-07-28 16:35:01 【问题描述】:

我是新手玩框架,以前只使用 php 来实现节俭的客户端/服务器。

我想使用 play 实现一个节俭服务。

我应该将thrift生成的java文件放在play框架目录结构中的哪里,以便它们被类加载器拾取?我已经看到了一个先前的答案,建议为他们构建 jar,但这似乎太多了 - 我将在开发时调整我的界面并且不想要构建 jar 的开销 - 再加上我对 java 有点生疏并且从未真正开始学习如何做到这一点。

谢谢

【问题讨论】:

【参考方案1】:

这是 Play 上的示例工作代码!使用 Thrift 0.7.0 的框架 1.2.3

服务器

// Play! Framework Server Controller
public class Application extends Controller 
public static void index() 
    render();


public static void api() throws ServletException 
    if (!request.contentType.contains("application/x-thrift")) 
        response.setContentTypeIfNotSet("text/plain");
        response.print("Unsupported Call");
        return;
    
    try 
        response.setContentTypeIfNotSet("application/x-thrift");
        ThriftServiceHandler handler = new ThriftServiceHandler();

        Processor processor = new MyThriftService.Processor(handler);

        TTransport transport = new TiostreamTransport(request.body, response.out);

        TProtocol inProtocol = new TBinaryProtocol(transport);
        TProtocol outProtocol = new TBinaryProtocol(transport);

        processor.process(inProtocol, outProtocol);
     catch (TException te) 
        throw new ServletException(te);
    
  

客户

// Java Thrift Client Using HTTP Transport
public static void main(String[] args) throws InvalidRequestException, AuthenticationException, TException, UnavailableException 
    THttpClient transport = new THttpClient("http://localhost:9000/application/api");

    TProtocol protocol = new TBinaryProtocol(transport);
    MyThriftService.Client client = new MyThriftService.Client(protocol);

    client.RPCMethod("some string");

【讨论】:

【参考方案2】:

由于 Thrift 有一个 Maven artifact,您可以使用 Play Framework dependencies 配置将其链接为依赖项。添加到播放的依赖项如下所示:

org.apache.thrift -> libthrift-0.6.1

【讨论】:

这是针对库本身的,不是针对生成的类的吗? 我假设(可能是错误的!)一旦你有了这个库,它就会根据应用程序的“根路径”对路径有自己的要求。这意味着您可以将新文件夹放在与“app”相同的级别,然后在其中添加您需要的内容。 不,我想我需要将我的类编译成 jars,然后将它们放在 lib 目录中

以上是关于将服务器播放为节俭端点?的主要内容,如果未能解决你的问题,请参考以下文章

哪种数据类型最适合 c++ 中节俭通信中的日期时间?

保护基于节俭的通信

节俭电话给出“未知结果”

一个节俭服务器/传输可以实现多种服务吗?

在节俭处理程序函数中获取对等地址

开始学习理财和节俭