Java: простой клиент не может подключиться к примеру с сервером, время ожидания

Я попробовал этот пример экономии Java из Интернета, как показано ниже. Клиент не подключился к серверу. У меня есть эти:

(1) экономное определение "add.thrift"

typedef i32 int  //typedefs to get convenient names for your types  

service AdditionService {  // defines the service to add two numbers  
        int add(1:int n1, 2:int n2), //defines a method  
}

(2) скомпилировать

thrift --gen java add.thrift

Я получил файл gen-java/AdditionServer.java

(3) Реализовать интерфейс сервиса в AdditionServiceHandler.java

import org.apache.thrift.TException;  
public class AdditionServiceHandler implements AdditionService.Iface {
    @Override
    public int add(int n1, int n2) throws TException {
        return n1 + n2;
    }  
}

(4) MyServer.java

import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TServer.Args;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TBinaryProtocol.Factory;
public class MyServer {
    public static void main(String[] args) {
        AdditionService.Processor<AdditionServiceHandler> processor =
            new AdditionService.Processor<AdditionServiceHandler>(new AdditionServiceHandler());
        try {
            TServerTransport serverTransport = new TServerSocket(9090);
            TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
            System.out.println("Starting the simple server...");
            server.serve();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

(5) AdditionClient.java

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 AdditionClient {
    public static void main(String[] args) {
        try {
            TTransport transport = new TSocket("localhost", 9090);
            transport.open();
            AdditionService.Client client = new AdditionService.Client(new TBinaryProtocol(transport));
            //client.ping(2012);
            System.out.println(client.add(100, 200));
            transport.close();
        } catch (TTransportException e) {
            e.printStackTrace();
        } catch (TException x) {
            x.printStackTrace();
        }
    }
}

(6) После "mvn compile" я выполнил:

mvn exec:java -Dexec.mainClass="MyServer"

Это напечатано

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Starting the simple server..

Затем я запускаю клиентскую часть, он не подключается, через несколько секунд он отключается и завершает работу:

mvn exec:java -Dexec.mainClass="AdditionClient"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building java_local 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ java_local ---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
org.apache.thrift.transport.TTransportException: java.net.ConnectException: Operation timed out (Connection timed out)
        at org.apache.thrift.transport.TSocket.open(TSocket.java:226)

Так где я ошибся, как это исправить?

0 ответов

Другие вопросы по тегам