Я пытаюсь реализовать демонстрационное приложение при весенней загрузке с запросом 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 от локального хоста к себе?