接第01部分,本节用来说明Java语言的代码实现。
使用thrift生成java代码之后,会生成两个java文件,无论是Client还是Server都要包含这个文件。
首先是Server端:
1、新建一个java项目,引用libthrift.jar,项目中添加生成的两个java文件。
2、新建一个类MyThriftServer,实现JustATest.Iface接口
package com.neohope.thrift.test;
import org.apache.thrift.TException;
public class MyThriftServer implements JustATest.Iface {
@Override
public String SayHelloTo(Person person) throws TException {
return "Hello "+ person.getName();
}
@Override
public int Add(int a, int b) throws TException {
return a+b;
}
}
3、修改TestServer.java
package com.neohope.thrift.test;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
public class TestServer {
public static void main(String[] args) {
try {
TServerSocket serverTransport = new TServerSocket(1900);
JustATest.Processor process = new JustATest.Processor(new MyThriftServer());
TBinaryProtocol.Factory portFactory = new TBinaryProtocol.Factory(true, true);
TThreadPoolServer.Args thriftArgs = new TThreadPoolServer.Args(serverTransport);
thriftArgs.processor(process);
thriftArgs.protocolFactory(portFactory);
TServer server = new TThreadPoolServer(thriftArgs);
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
}
}
}
4、编译运行
然后是Client端:
1、新建一个java项目,引用libthrift.jar,项目中添加生成的两个java文件。
2、修改TestClient.java
package com.neohope.thrift.test;
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;
public class TestClient {
public static void main(String[] args) {
TTransport transport;
try {
transport = new TSocket("localhost", 1900);
TProtocol protocol = new TBinaryProtocol(transport);
JustATest.Client client = new JustATest.Client(protocol);
transport.open();
Person p = new Person();
p.setName("neohope");
System.out.println(client.SayHelloTo(p));
System.out.println(client.Add(1, 2));
transport.close();
} catch (TTransportException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
}
}
3、编译运行