thrift java eclipse

1. 下载 thrift

https://thrift.apache.org/download

我是windows环境

http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.exe

thrift java eclipse_第1张图片

2.  eclipse  建  maven  工程

pom.xml


          org.apache.thrift
          libthrift
          0.9.3
      

thrift java eclipse_第2张图片



3.  project 下建 thrift目录,建hello.thrift文件

namespace java com.stone.thrift

service Hello{

  string helloString(1:string para)
  i32 helloInt(1:i32 para)
  bool helloBoolean(1:bool para)
  void helloVoid()
  string helloNull()
 
 }


thrift java eclipse_第3张图片


4. 根据  thrift  文件生成 java 代码

在当前目录下  生成了gen-java目录

thrift java eclipse_第4张图片

将目录拷贝到project 下

thrift java eclipse_第5张图片


拷贝进来后报错,是override的原因。没有父类或接口,却使用了override,不知是工具的原因,还是我理解不到位。

remove 所有的  override注解



5. 编写接口的实现

package com.stone.thrift;

import org.apache.thrift.TException;

public class HelloServiceImpl implements Hello.Iface{

    public String helloString(String para) throws TException {
        // TODO Auto-generated method stub
        return "这是我的一个thrift  hello java "+ para;
    }

    public int helloInt(int para) throws TException {
        // TODO Auto-generated method stub
        return 0;
    }

    public boolean helloBoolean(boolean para) throws TException {
        // TODO Auto-generated method stub
        return false;
    }

    public void helloVoid() throws TException {
        // TODO Auto-generated method stub
        
    }

    public String helloNull() throws TException {
        // TODO Auto-generated method stub
        return null;
    }

}

这里只具体实现了一个方法,其他方法都是自动生成的,没任何功能实现

thrift java eclipse_第6张图片


6. 编写服务端,并启动

package com.stone.thrift.server;

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.TSimpleServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;

import com.stone.thrift.Hello;
import com.stone.thrift.HelloServiceImpl;

public class HelloServiceServer {
   /**
    * 启动 Thrift 服务器
    * @param args
    */
   public static void main(String[] args) {
       try {
           
           // 设置服务监听端口为 1688
           TServerSocket serverTransport = new TServerSocket(1688);
           //创建自己具体的processor
           TProcessor tprocessor = new Hello.Processor(new HelloServiceImpl());
           
           TServer.Args tArgs = new TServer.Args(serverTransport);
           tArgs.processor(tprocessor);
           // 设置协议工厂为 TBinaryProtocol.Factory
           tArgs.protocolFactory(new TBinaryProtocol.Factory());
           
           TServer server = new TSimpleServer(tArgs);
           // 关联处理器与 Hello 服务的实现
           System.out.println("Start server on port 1699...");
           
           server.serve();
           
           
       } catch (TTransportException e) {
           e.printStackTrace();
       }
   }
}


thrift java eclipse_第7张图片



7. 编写客户端,并启动


package com.stone.thrift.client;

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.TTransport;
import org.apache.thrift.transport.TTransportException;

import com.stone.thrift.Hello;

public class HelloClient {
    
        public static void main(String[] s){
            TTransport transport = null;
            try {
                transport = new TSocket("127.0.0.1", 1688, 30000);
                // 协议要和服务端一致
                TProtocol protocol = new TBinaryProtocol(transport);
                // TProtocol protocol = new TCompactProtocol(transport);
                // TProtocol protocol = new TJSONProtocol(transport);
                Hello.Client client = new Hello.Client(protocol);
                transport.open();
                String result = client.helloString("THRIFT JAVA CLIENT ");
                System.out.println("Thrify client result =: " + result);
            } catch (TTransportException e) {
                e.printStackTrace();
            } catch (TException e) {
                e.printStackTrace();
            } finally {
                if (null != transport) {
                    transport.close();
                }
            }
        }
        
        
}

thrift java eclipse_第8张图片

服务端启动信息

thrift java eclipse_第9张图片


客户端启动信息

thrift java eclipse_第10张图片


至此,一个简单的thrift hello  完成了。


示例代码   http://download.csdn.net/detail/stonexmx/9546638


你可能感兴趣的:(分布式,负载,集群)