`
hanqunfeng
  • 浏览: 1541857 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Thrift--JSClient

 
阅读更多

thrift提供了基于jquery--ajax的客户端调用方式,返回json数据。

生成js代码使用如下命令:

 

thrift --gen js Contact.thrift

这样会在gen-js目录下生成两个js文件:Contact_types.js,ContactManager.js,将这两个js文件拷贝到项目中。

同时需要导入thrift.js(thrift-0.9.1\lib\js目录下)和JQuery.js(1.5以上的版本)。

 

 

编写一个jsp页面thriftJs.jsp,用于展示客户端的调用方法:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="resources/js/thrift.js"></script>
<script type="text/javascript" src="resources/js/jquery-1.7.2.min.js"></script>

<!-- ContactManager -->
<script type="text/javascript" src="resources/js/Contact_types.js"></script>
<script type="text/javascript" src="resources/js/ContactManager.js"></script>

<script type="text/javascript">
	$(function() {
		try {
			var path = "<%=request.getContextPath()%>";
			//使用ajax,不能跨域访问,这里传入一个type=json参数
			var transport = new Thrift.Transport(path + "/contractManageServletProxy.do?type=json");
			var protocol = new Thrift.Protocol(transport);
			var client = new ContactManagerClient(protocol);
			var result_GetString = client.getAll(); //json格式
			//alert(result_GetString);
			$("#thriftjs").html(result_GetString[0].id);
		} catch (e) {
			alert("出错鸟:" + e.message);
		}
	});
</script>

</head>
<body>
	thrift js result:
	<div id="thriftjs"></div>
</body>
</html>

 

 服务端依然使用http://hanqunfeng.iteye.com/blog/1946999中的servlet代理,只不过这里为了使其能够支持json类型,对代理进行了改写:

@Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		TTransport inTransport = null;
		TTransport outTransport = null;
		TProtocolFactory inProtocolFactory = null;
		TProtocolFactory outProtocolFactory = null;
		String local_type = request.getParameter("type");

		try {
			
			if(StringUtils.hasText(local_type)){
				protocolType = local_type;
			}
			
			if ("json".equals(protocolType)) {//支持json协议
				inProtocolFactory = new TJSONProtocol.Factory();
				outProtocolFactory = new TJSONProtocol.Factory();
				response.setContentType("application/json");
			} else {
				inProtocolFactory = new TCompactProtocol.Factory();
				outProtocolFactory = new TCompactProtocol.Factory();
				response.setContentType("application/x-thrift");
			}
			

			if (null != this.customHeaders) {
				for (Map.Entry<String, String> header : this.customHeaders) {
					response.addHeader(header.getKey(), header.getValue());
				}
			}
			InputStream in = request.getInputStream();
			OutputStream out = response.getOutputStream();

			TTransport transport = new TIOStreamTransport(in, out);
			inTransport = transport;
			outTransport = transport;

			TProtocol inProtocol = inProtocolFactory.getProtocol(inTransport);
			TProtocol outProtocol = outProtocolFactory
					.getProtocol(outTransport);

			processor.process(inProtocol, outProtocol);
			out.flush();
		} catch (TException te) {
			throw new ServletException(te);
		}
	}

 

 

 

分享到:
评论

相关推荐

    thrift-0.9.1.exe和thrift-0.9.2.exe

    标题中的"thrift-0.9.1.exe"和"thrift-0.9.2.exe"是Thrift框架的不同版本。这些文件是Windows平台上的可执行程序,用于生成与Thrift相关的代码。0.9.1和0.9.2分别代表了Thrift的两个发行版本,每个版本可能包含了新...

    maven-thrift-plugin-0.1.11-sources.jar

    maven-thrift-plugin-0.1.11-sources.jar

    maven-thrift-plugin-0.1.11.jar

    maven-thrift-plugin-0.1.11.jar

    maven-thrift-plugin-0.1.10

    maven插件 maven-thrift-plugin-0.1.10

    thrift-0.13.0.zip

    "thrift-0.13.0.zip"这个压缩包包含了Thrift 0.13.0版本的源码和工具,用于生成Go语言的Thrift接口。Thrift IDL文件描述了HBase服务的接口,包括批量读写操作。批量操作在HBase中是非常重要的,因为它们可以显著提高...

    maven-thrift-client

    【 Maven 和 Thrift 的结合:maven-thrift-client】 在软件开发中,Thrift 是一个强大的跨语言服务开发框架,由 Facebook 开发并开源。它允许开发者定义服务接口和服务数据类型,然后自动生成多种编程语言的客户端...

    thrift-0.9.3.exe

    "thrift-0.9.3.exe"是Thrift框架的一个特定版本(0.9.3)的可执行文件,主要用于Windows操作系统。这个文件在Thrift开发过程中扮演着至关重要的角色,它能帮助开发者将定义好的Thrift接口文件(.thrift)转换为不同...

    Laravel开发-thrift-laravel

    【Laravel开发与Thrift-Laravel整合】 在现代Web应用开发中,Laravel作为一个流行的PHP框架,因其优雅的语法和强大的功能而备受开发者喜爱。Thrift则是一个跨语言的服务框架,由Facebook开源,用于实现高性能、可...

    thrift-0.9.2.exe

    thrift开发时,将thrift文件自动生成java文件需要用到thrift-0.9.0.exe

    thrift-0.13.0.tar.gz

    在“thrift-0.13.0.tar.gz”这个压缩包中,包含了Thrift 0.13.0版本的相关源码、库文件和文档。 Thrift IDL是Thrift的关键组成部分,它允许开发者用类似C++或Java的语法定义数据类型和服务接口。例如,你可以定义一...

    thrift-0.9.0.exe

    thrift开发时,将thrift文件自动生成java文件需要用到thrift-0.9.0.exe

    thrift-0.9.0.tar.gz

    Thrift-0.9.0是这个框架的一个版本,包含源代码,用户可以编译并根据需要在自己的项目中使用。 在Thrift的实现中,它首先定义了一种中间表示(IDL,Interface Description Language),允许开发者描述服务接口、...

    maven-thrift-server

    【 Maven-Thrift-Server:构建Thrift服务的Maven实践】 在软件开发中,Thrift是一种高效的跨语言服务开发框架,由Facebook开发并开源。它允许定义数据类型和服务接口,然后自动生成各种编程语言的代码,使得不同...

    thrift-0.13.0在Windows上exe程序.rar

    标题"thrift-0.13.0在Windows上exe程序.rar"表明这个压缩包包含了Thrift 0.13.0版本的Windows可执行文件。这个版本可能包含了一些新特性、修复了已知问题,或者对性能进行了优化。在Windows环境下,.exe文件是可直接...

    thrift-0.9.1.exe和thrift-0.9.2.exe 含使用说明

    在"thrift-0.9.1.exe"和"thrift-0.9.2.exe"这两个版本中,主要包含了Thrift编译器和相关的库文件。编译器是一个命令行工具,用于将IDL文件转换为实际编程语言的代码。例如,你可以编写一个.thrift文件定义服务接口,...

    银河麒麟高级服务器版v10系统的thrift-0.17.0及其依赖安装包

    银河麒麟高级服务器版v10系统的thrift-0.17.0及其依赖安装包

    thrift-0.10.0.exe

    它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...

    thrift-0.9.3 修复版

    这个"thrift-0.9.3 修复版"是官方0.9.3版本的一个修正版本,旨在解决原版中存在的一些问题,特别是链接错误。这些错误可能影响到服务的稳定性和效率,修复后能提高开发者的体验和系统的可靠性。 Thrift 的核心功能...

Global site tag (gtag.js) - Google Analytics