thrift
namespace java com.example.thrift
struct Person {
1: required string name,
2: optional i32 age,
3: required string address
}
service PersonService {
bool addPerson(1: Person person),
Person getPerson(1: string name)
}
thrift --gen java example.thrift
package com.example.thrift;
import org.apache.thrift.TException;
public class PersonServiceImpl implements PersonService.Iface {
@Override
public boolean addPerson(Person person) throws TException {
return true;
}
@Override
public Person getPerson(String name) throws TException {
return new Person();
}
}
package com.example.thrift;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
public class Server {
public static void main(String[] args) {
try {
PersonServiceImpl handler = new PersonServiceImpl();
PersonService.Processor<PersonServiceImpl> processor = new PersonService.Processor<>(handler);
TServerTransport serverTransport = new TServerSocket(9090);
TServer server = new TSimpleServer(new TServer.Args(serverTransport).processor(processor));
System.out.println("Starting the server...");
server.serve();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.example.thrift;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
public class Client {
public static void main(String[] args) {
try {
TTransport transport = new TSocket("localhost", 9090);
transport.open();
TBinaryProtocol protocol = new TBinaryProtocol(transport);
PersonService.Client client = new PersonService.Client(protocol);
Person person = new Person();
person.setName("John Doe");
person.setAge(30);
person.setAddress("123 Main St");
client.addPerson(person);
Person retrievedPerson = client.getPerson("John Doe");
System.out.println("Retrieved person: " + retrievedPerson.getName());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}