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

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

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

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

谢谢

【问题讨论】:

    标签: java playframework thrift


    【解决方案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 目录中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多