- 浏览: 44734 次
最新评论
-
yangjianzhouctgu:
恩,知道了,谢谢啦!
各种排序算法java实现收藏 -
lvmlvy:
yangjianzhouctgu 写道请问org.rut.ut ...
各种排序算法java实现收藏 -
yangjianzhouctgu:
请问org.rut.util.algorithm.SortUt ...
各种排序算法java实现收藏 -
yangjianzhouctgu:
请问org.rut.util.algorithm.SortUt ...
各种排序算法java实现收藏 -
jian2009:
你好,请问一下,怎么样在spring中配置jmx监控的访问权限 ...
JMX监控ActiveMQ
Thrift开发实例
准备工作
Thrift主页:http://thrift.apache.org/
Thrift下载:http://thrift.apache.org/download/
下载thrift-0.8.0.tar.gz和Thrift compiler for Windows (thrift-0.8.0.exe)
创建工作区../thrift;
将thrift-0.8.0.tar.gz和thrift-0.8.0.exe拷贝到../thrift下;
将thrift-0.8.0.tar.gz解压到当前目录;
创建start.bat,编辑其内容为:
cd
thrift-0.8.0 --gen java *.thrift
pause
简单实例
创建thrift脚本文件:
namespace java com.test.rpc
service TestService{
string getUserName(1:i64 id)
}
执行start.bat,thrift会根据脚本生成java代码../thrift/gen-java/com/test/rpc/ TestService.java;
创建java project;
创建package:com.test.rpc,将生成的TestService.java拷入;
创建接口实现类TestImpl
package com.test.rpc;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import com.test.rpc.TestService.Iface;
import com.test.user.IUserService;
import com.test.user.UserServiceImpl;
public class TestImpl implements Iface {
private static final Logger LOG = Logger.getLogger(TestImpl.class);
@Override
public String getUserName(long id) throws TException {
LOG.info("TestImpl server get rpc msg :"+id);
IUserService userService = new UserServiceImpl();
String username = userService.getUser(id);
return username;
}
}
创建RPC server启动线程
package com.test.rpc;
import javax.xml.ws.Endpoint;
import org.apache.log4j.Logger;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TBinaryProtocol.Factory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.server.TThreadPoolServer.Args;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
import com.test.service.CommonService;
public class TestServer extends Thread {
private static final Logger LOG = Logger.getLogger(TestServer.class);
@Override
public void run() {
try {
TestImpl testimpl = new TestImpl();
TServerSocket serverTransport = new TServerSocket(7911);
Factory proFactory = new TBinaryProtocol.Factory();
TProcessor processor = new TestService.Processor<TestImpl>(testimpl);
Args rpcArgs = new Args(serverTransport);
rpcArgs.processor(processor);
rpcArgs.protocolFactory(proFactory);
TServer server = new TThreadPoolServer(rpcArgs);
LOG.info("Start TestService on port 7911..." + Thread.currentThread().getId() + "["
+ Thread.currentThread().getName() + "]");
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
LOG.info("TestService.simpleRun", e);
}
}
/**
* @param args
*/
public static void main(String[] args) {
TestServer server = new TestServer();
server.start();
}
}
复杂对象实例
与简单实例基本相同,只是脚本不同,参数以对象方式传递,自动生成的java类多一些;
创建thrift脚本文件:
namespace java com.test.rpc
struct User {
1: i64 id
2: string name
}
service TestService{
User getUser(1:i64 id)
}
执行start.bat,thrift会根据脚本生成java代码../thrift/gen-java/com/test/rpc/目录下TestService.java、User.Java;
创建java project;
创建package:com.test.rpc,将生成的TestService.java、User.Java拷入;
其他步骤类同上例;
客户端代码
package com.test.rpc;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransportException;
import com.test.rpc.TestService.Client;
public class TestClient {
private static final Logger LOG = Logger.getLogger(TestClient.class);
public static void main(String[] args){
try{
TSocket tsocket = new TSocket("localhost", 7911);
tsocket.open();
TProtocol protocol = new TBinaryProtocol(tsocket);
Client client = new Client(protocol);
User user = client.getUser(id);
LOG.info(user.getName());
}catch (Exception e) {
LOG.error(e.getMessage(), e);
}
}
}
准备工作
Thrift主页:http://thrift.apache.org/
Thrift下载:http://thrift.apache.org/download/
下载thrift-0.8.0.tar.gz和Thrift compiler for Windows (thrift-0.8.0.exe)
创建工作区../thrift;
将thrift-0.8.0.tar.gz和thrift-0.8.0.exe拷贝到../thrift下;
将thrift-0.8.0.tar.gz解压到当前目录;
创建start.bat,编辑其内容为:
cd
thrift-0.8.0 --gen java *.thrift
pause
简单实例
创建thrift脚本文件:
namespace java com.test.rpc
service TestService{
string getUserName(1:i64 id)
}
执行start.bat,thrift会根据脚本生成java代码../thrift/gen-java/com/test/rpc/ TestService.java;
创建java project;
创建package:com.test.rpc,将生成的TestService.java拷入;
创建接口实现类TestImpl
package com.test.rpc;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import com.test.rpc.TestService.Iface;
import com.test.user.IUserService;
import com.test.user.UserServiceImpl;
public class TestImpl implements Iface {
private static final Logger LOG = Logger.getLogger(TestImpl.class);
@Override
public String getUserName(long id) throws TException {
LOG.info("TestImpl server get rpc msg :"+id);
IUserService userService = new UserServiceImpl();
String username = userService.getUser(id);
return username;
}
}
创建RPC server启动线程
package com.test.rpc;
import javax.xml.ws.Endpoint;
import org.apache.log4j.Logger;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TBinaryProtocol.Factory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.server.TThreadPoolServer.Args;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
import com.test.service.CommonService;
public class TestServer extends Thread {
private static final Logger LOG = Logger.getLogger(TestServer.class);
@Override
public void run() {
try {
TestImpl testimpl = new TestImpl();
TServerSocket serverTransport = new TServerSocket(7911);
Factory proFactory = new TBinaryProtocol.Factory();
TProcessor processor = new TestService.Processor<TestImpl>(testimpl);
Args rpcArgs = new Args(serverTransport);
rpcArgs.processor(processor);
rpcArgs.protocolFactory(proFactory);
TServer server = new TThreadPoolServer(rpcArgs);
LOG.info("Start TestService on port 7911..." + Thread.currentThread().getId() + "["
+ Thread.currentThread().getName() + "]");
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
LOG.info("TestService.simpleRun", e);
}
}
/**
* @param args
*/
public static void main(String[] args) {
TestServer server = new TestServer();
server.start();
}
}
复杂对象实例
与简单实例基本相同,只是脚本不同,参数以对象方式传递,自动生成的java类多一些;
创建thrift脚本文件:
namespace java com.test.rpc
struct User {
1: i64 id
2: string name
}
service TestService{
User getUser(1:i64 id)
}
执行start.bat,thrift会根据脚本生成java代码../thrift/gen-java/com/test/rpc/目录下TestService.java、User.Java;
创建java project;
创建package:com.test.rpc,将生成的TestService.java、User.Java拷入;
其他步骤类同上例;
客户端代码
package com.test.rpc;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransportException;
import com.test.rpc.TestService.Client;
public class TestClient {
private static final Logger LOG = Logger.getLogger(TestClient.class);
public static void main(String[] args){
try{
TSocket tsocket = new TSocket("localhost", 7911);
tsocket.open();
TProtocol protocol = new TBinaryProtocol(tsocket);
Client client = new Client(protocol);
User user = client.getUser(id);
LOG.info(user.getName());
}catch (Exception e) {
LOG.error(e.getMessage(), e);
}
}
}
发表评论
-
java对象序列化xml
2014-08-19 16:47 01、jaxb序列化 public static Stri ... -
正则替换
2014-06-10 14:17 673String str = "<p>&l ... -
java执行shell命令
2014-04-09 10:31 720bDelOldFolder = ShellCmdUti ... -
java执行ant脚本
2014-04-09 10:27 1private void getSourc ... -
执行ant脚本
2014-03-31 17:12 6271、webproject获取src下文件的方法 File ... -
eclipse中无法自动提示代码模板的解决办法
2013-10-24 14:07 641eclipse中本身提供了一些很方便的代码补全模板,如输入sy ... -
[转]thrift java多线程非阻塞同步/异步调用实例
2013-10-17 09:24 2328server端代码: public class Serv ... -
request中读取字符串
2013-09-18 15:37 7621、 BufferedRead ... -
jetty嵌入java project提供http服务
2013-09-18 11:13 18731、main函数中启动一个servlet public ... -
单例对象公有方法的并发调用
2013-05-10 11:32 833首先,我们要清楚java中的内存情况,大略如下,这个大家一般 ... -
[转]java 中的connection reset 异常处理分析
2013-03-15 16:44 1421在Java中常看见的几个connection rest e ... -
java.net.SocketException: Broken pipe 异常<转载>
2013-03-08 15:08 786Broken pipe产生的原因通常是当管道读端没有在读,而 ... -
【转】Log4j 加载使用及配置说明
2013-02-18 13:23 735Log4j 加载使用及配置说明 主要组件1、根类别 ... -
数据库连接池的思考
2012-12-27 19:44 714众所周之,java中操作的都是对象的引用,如下例 ... -
spring单例
2012-12-13 09:30 7121、配置两个bean <bean id=&q ... -
ant 构建单元测试
2012-12-11 15:15 10691、使用ant对代码进行编译构建,编译到${basedir} ... -
Mysql连接过期导致dbcp连接池中连接的使用异常
2012-11-14 11:30 2749异常信息: com.mysql.jdbc.exceptio ... -
各种排序算法java实现收藏
2012-10-24 16:16 1408各种排序算法java实现收藏 插入排序: ... -
jvm版本不对,导致ant编译失败
2012-09-13 18:40 826运行ant的时候出现 Specified VM instal ... -
spring+ibatis事务回滚
2012-09-04 09:49 14991、所需jar cglib-nodep-2.1_3.jar ...
相关推荐
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开发并开源,后来成为Apache基金会的顶级项目。它的主要目的是提供一个高效、轻量级的框架,用于构建可扩展的服务,使得不同编程语言之间能够进行无缝通信...
同时,Thrift还具有良好的扩展性,可以方便地添加新的服务和数据类型,使得Delphi开发的系统能够无缝地与其他语言的系统进行交互。 总之,Thrift Delphi实例是一个极好的学习资源,它揭示了跨语言服务通信的核心...
`tech_thrift.rar`可能是一个包含具体Thrift服务开发实例的压缩包,包含了一些示例代码和项目配置。 `apache-ant-1.9.6-bin.zip`是Apache Ant,一个Java的构建工具,用于自动化构建Thrift项目和执行编译任务。 `...
在IT行业中,Thrift是一种高性能、可扩展的跨语言服务开发框架,由Facebook开源,用于构建分布式服务。它通过定义一种中间表示(IDL,接口定义语言)来描述服务,然后自动生成不同编程语言的代码,使得不同语言之间...
在实际开发中,你可能还需要处理一些额外的细节,比如错误处理、连接管理和性能优化。例如,你可以使用Qt的信号和槽机制来处理服务调用的结果,或者使用QCache来缓存服务对象以提高效率。 总的来说,“C++(Qt)下...
在这个"基于thrift开发的客户端和服务端"的示例中,我们将深入理解如何使用Thrift来构建跨平台的服务通信。 首先,Thrift通过定义一个接口描述语言(IDL)来创建服务接口。这个文件通常以`.thrift`为扩展名,它包含...
Thrift通过定义一种中间表示(IDL,Interface Definition Language)来描述服务接口,然后自动生成相应的客户端和服务器端代码,简化了多语言服务开发的复杂性。 Thrift的核心概念是服务接口,它定义了服务提供的...
在本实例中,我们将关注一个基于Thrift的RPC调用实现,Thrift是由Facebook开发的一种高效的跨语言服务开发框架。 Thrift的核心思想是定义一种中间描述文件(.thrift),该文件包含了服务接口、数据结构以及服务间的...
thrift属于facebook.com技术核心框架之一,使用不同开发语言开发的系统可以通过该框架实现彼此间的通讯,开发者只需编辑一份thrift脚本,即可自动获得其它开发语言的代码(比如 c++ java python ruby c# haskell ...
Thrift是一种高性能、跨语言的服务框架,由Facebook于2007年开发并开源,它允许程序员在不同的编程语言之间创建可伸缩的、高效的、跨平台的服务。在这个实例程序中,我们将深入探讨Thrift的工作原理,以及如何通过它...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年设计并开源,后来成为Apache软件基金会的顶级项目。它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,允许开发者在不同的...
Thrift是由Facebook开发的一种开源跨语言服务开发框架。它的主要目标是提供一种高效、可扩展的方法来构建分布式应用程序。Thrift通过定义服务接口和数据结构,生成相应的代码,使得开发者可以在多种编程语言之间轻松...
这个"thrift-Demo"应该是一个演示如何使用Thrift的实例,包含了一系列的步骤和文件,帮助初学者理解Thrift的工作原理和使用方法。 在Thrift中,我们首先需要创建一个`.thrift`文件,这个文件定义了服务的接口和数据...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开源,现由Apache基金会维护。它允许开发者定义服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以进行高效、可靠的RPC(远程过程调用)...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年创建,现在是Apache软件基金会的项目。它的主要目标是通过定义一种中间语言(IDL,Interface Definition Language)来简化不同编程语言之间的通信,使得...
这种跨语言的能力使得开发多语言服务变得简单,同时Thrift还提供了一种轻量级的二进制协议,确保了通信效率。 二、Thrift IDL Thrift接口定义语言(IDL)是一种简单的结构化语言,用于定义服务、数据结构和常量。...
通过深入理解和实战应用,我们可以充分利用Thrift解决实际开发中的通信难题,提升系统的整体性能和可维护性。在实际项目中,如ThriftMvnProject所示,将Thrift集成到Maven项目中,能够简化开发流程,方便管理和升级...
**Laravel 开发与 Thrift Laravel** 在现代Web开发中,Laravel是一个广泛使用的PHP框架,以其优雅的语法和强大的功能赢得了开发者们的喜爱。而Thrift则是一个跨语言的服务开发框架,由Facebook开源,用于构建可伸缩...
在软件开发中,Thrift是一种高效的跨语言服务开发框架,由Facebook开发并开源。它允许定义数据类型和服务接口,然后自动生成各种编程语言的代码,使得不同语言的系统之间可以进行无缝通信。Maven作为Java项目管理...