真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Thrift在windows7下的安裝與實踐-創(chuàng)新互聯(lián)

本文借鑒自

目前累計服務客戶千余家,積累了豐富的產(chǎn)品開發(fā)及服務經(jīng)驗。以網(wǎng)站設計水平和技術實力,樹立企業(yè)形象,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設計、網(wǎng)絡營銷、VI設計、網(wǎng)站改版、漏洞修補等服務。創(chuàng)新互聯(lián)始終以務實、誠信為根本,不斷創(chuàng)新和提高建站品質,通過對領先技術的掌握、對創(chuàng)意設計的研究、對客戶形象的視覺傳遞、對應用系統(tǒng)的結合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。

http://www.jianshu.com/p/0f4113d6ec4b

(下面稱簡書教程)

首先上官網(wǎng)下載代碼

https://thrift.apache.org/download

下載源碼thrift-0.9.3.tar.gz

解壓之后放在路徑C:\thrift-0.9.3\thrift-0.9.3

并下載windows執(zhí)行版thrift-0.9.3.exe

放在路徑C:\thrift-0.9.3下

下載apache ant項目,用于打jar包

下載路徑

http://ant.apache.org/bindownload.cgi

解壓之后放在路徑C:\apache-ant-1.9.7-bin\apache-ant-1.9.7

配置環(huán)境變量

ANT_HOME  : C:\apache-ant-1.9.7-bin\apache-ant-1.9.7

把C:\apache-ant-1.9.7-bin\apache-ant-1.9.7\bin\ant.bat復制到路徑C:\thrift-0.9.3\thrift-0.9.3\lib\java下

在cmd中運行ant.bat,會生成jar包libthrift-0.9.3 在路徑C:\thrift-0.9.3\thrift-0.9.3\lib\java\build

在路徑C:\thrift-0.9.3中創(chuàng)建一個文本文件

復制代碼

namespace java com.winwill.thrift
enum RequestType {
  SAY_HELLO,  //問好
  QUERY_TIME,  //詢問時間}struct Request {
  1: required RequestType type;  // 請求的類型,必選
  2: required string name;    // 發(fā)起請求的人的名字,必選
  3: optional i32 age;      // 發(fā)起請求的人的年齡,可選
  }

exception RequestException {
1: required i32 code;
2: optional string reason;
}
// 服務名
service HelloWordService {
string doAction(1: Request request) throws (1:RequestException qe);
// 可能拋出異常。
}

保存為Test.thrift

在cmd中進入路徑C:\thrift-0.9.3

執(zhí)行命令thrift-0.9.3 -gen java Test.thrift

會在路徑C:\thrift-0.9.3下生成一個文件夾gen-java

在Eclipse中創(chuàng)建工程TestThrift

按照簡書教程生成package

com.winwill.thrift

把上面生成的gen-java中的代碼復制到package中

并在package中創(chuàng)建代碼,由于可能跟簡書教程使用的版本不同,簡書教程中的某些寫法無法編譯,

經(jīng)過修改后使用如下代碼

1.服務端

package com.winwill.thrift;

import org.apache.commons.lang3.StringUtils;
import org.apache.thrift.TException;

import java.util.Date;

public class HelloWordServiceImpl implements com.winwill.thrift.HelloWordService.Iface {
    // 實現(xiàn)這個方法完成具體的邏輯。
    public String doAction(com.winwill.thrift.Request request) throws com.winwill.thrift.RequestException, TException {
        System.out.println("Get request: " + request);
        if (StringUtils.isBlank(request.getName()) || request.getType() == null) {
            throw new com.winwill.thrift.RequestException();
        }
        String result = "Hello, " + request.getName();
        if (request.getType() == com.winwill.thrift.RequestType.SAY_HELLO) {
            result += ", Welcome!";
        } else {
            result += ", Now is " + new Date().toLocaleString();
        }
        return result;
    }
}

2.啟動服務

package com.winwill.thrift;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.protocol.TJSONProtocol;
import org.apache.thrift.protocol.TProtocolFactory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TFastFramedTransport;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportFactory;
import org.slf4j.*;
import java.net.ServerSocket;

public class HelloWordServer {
    public static void main(String[] args) throws Exception {
     int port = 7912;
     String transport_type = "buffered";
        String protocol_type = "binary";
        String server_type = "thread-pool";
        String domain_socket = "";
//        ServerSocket socket = new ServerSocket(7912);
     // Protocol factory
        TProtocolFactory tProtocolFactory = null;
        if (protocol_type.equals("json")) {
          tProtocolFactory = new TJSONProtocol.Factory();
        } else if (protocol_type.equals("compact")) {
          tProtocolFactory = new TCompactProtocol.Factory();
        } else {
          tProtocolFactory = new TBinaryProtocol.Factory();
        }

        TTransportFactory tTransportFactory = null;

        if (transport_type.equals("framed")) {
          tTransportFactory = new TFramedTransport.Factory();
        } else if (transport_type.equals("fastframed")) {
          tTransportFactory = new TFastFramedTransport.Factory();
        } else { // .equals("buffered") => default value
          tTransportFactory = new TTransportFactory();
        }
        TServerSocket serverTransport = new TServerSocket(new TServerSocket.ServerSocketTransportArgs().port(port));;
        com.winwill.thrift.HelloWordService.Processor processor = new com.winwill.thrift.HelloWordService.Processor(new HelloWordServiceImpl());
        TServer.Args tServerArgs = new TServer.Args(serverTransport);
        tServerArgs.processor(processor);
        tServerArgs.protocolFactory(tProtocolFactory);
        tServerArgs.transportFactory(tTransportFactory);
        TServer server = new TSimpleServer(tServerArgs);
        System.out.println("Running server...");
        server.serve();
    }
}

3.客戶端請求

package com.winwill.thrift;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

public class HelloWordClient {
    public static void main(String[] args) throws Exception {
        TTransport transport = new TSocket("【此處使用服務器ip地址】", 7912);
        TProtocol protocol = new TBinaryProtocol(transport);

        // 創(chuàng)建client
        com.winwill.thrift.HelloWordService.Client client = new com.winwill.thrift.HelloWordService.Client(protocol);

        transport.open();  // 建立連接

        // 第一種請求類型
        com.winwill.thrift.Request request = new com.winwill.thrift.Request()
                .setType(com.winwill.thrift.RequestType.SAY_HELLO).setName("winwill2012").setAge(24);
        System.out.println(client.doAction(request));

        // 第二種請求類型
        request.setType(com.winwill.thrift.RequestType.QUERY_TIME).setName("winwill2012");
        System.out.println(client.doAction(request));

        transport.close();  // 請求結束,斷開連接
    }
}

在一臺服務器上測試啟動服務

輸出Running server...

在另一臺機器啟動客戶端

輸出

Hello, winwill2012, Welcome!

Hello, winwill2012, Now is 2016-10-13 17:06:47

此時服務器端輸出

Get request: Request(type:SAY_HELLO, name:winwill2012, age:24)

Get request: Request(type:QUERY_TIME, name:winwill2012, age:24)

說明已經(jīng)成功連接啦

本文所用到的工具和工程已經(jīng)打包上傳到云盤,歡迎大家下載

鏈接:http://pan.baidu.com/s/1jHQXSma 密碼:65uh

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


名稱欄目:Thrift在windows7下的安裝與實踐-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/djiegj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部