Пружинный ботинок 2 с опорой - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь реализовать демонстрационное приложение при весенней загрузке с запросом thrift rp c. У меня проблема с подключением к моему комиссионному серверу.

У меня есть простое описание комиссионного сервиса:

service ThriftTest {
    string sayHi(1: string s);
}

И его реализация в java:

@Controller
public class ThriftTestImpl implements ThriftTest.Iface {
    @Override
    public String sayHi(String s) throws TException {
        String a = "HI " + s;
        System.out.println(a);
        return a;
    }
}

И основной класс с конфигурацией:

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public TProtocolFactory tProtocolFactory() {
        return new TSimpleJSONProtocol.Factory();
    }

    @Bean
    public ServletRegistrationBean testApi(TProtocolFactory protocolFactory, ThriftTestImpl handler) {
        return new ServletRegistrationBean(
                new TServlet(new ThriftTest.Processor<>(handler), protocolFactory),
                "/test/*");
    }
}

Приложение запускается правильно, но когда я делаю запрос с моей локальной машины из другого проекта:

public class Application {
    public static void main(String[] args) throws TException {
        TSimpleJSONProtocol.Factory tProtocolFactory = new TSimpleJSONProtocol.Factory();
        ThriftTest.Client client = new ThriftTest.Client(tProtocolFactory.getProtocol(new THttpClient("http://localhost:8080/test/")));
        String qwe = client.sayHi("qwe");
        System.out.println(qwe);
    }
}

Я получил следующее исключение:

Exception in thread "main" org.apache.thrift.TApplicationException: sayHi failed: out of sequence response: expected 1 but got 0
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:86)
    at com.demo.thrift.ThriftTest$Client.recv_sayHi(ThriftTest.java:61)
    at com.demo.thrift.ThriftTest$Client.sayHi(ThriftTest.java:48)
    at com.demo.requester.Application.main(Application.java:12)

Если я пытаюсь сделать запрос к неправильной конечной точке, я получаю исключение 404, которое означает, что мой сервлет работает. Я думаю, что я делаю что-то не так на стороне экономичного сервера, но я понятия не имею, что это такое.

Можно ли сделать запрос rp c от локального хоста к себе?

...