将服务器播放为节俭端点?
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 目录中以上是关于将服务器播放为节俭端点?的主要内容,如果未能解决你的问题,请参考以下文章