Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在异步thrift客户端中传递URI/上下文路径_Java_Spring Boot_Thrift - Fatal编程技术网

Java 在异步thrift客户端中传递URI/上下文路径

Java 在异步thrift客户端中传递URI/上下文路径,java,spring-boot,thrift,Java,Spring Boot,Thrift,我正在尝试构建一个异步thrift客户端。下面是我正在构建的代码 TNonblockingTransport transport = new TNonblockingSocket("127.0.0.1", 8080); TAsyncClientManager clientManager = new TAsyncClientManager(); TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); TCalculator

我正在尝试构建一个异步thrift客户端。下面是我正在构建的代码

TNonblockingTransport transport = new TNonblockingSocket("127.0.0.1", 8080);
TAsyncClientManager clientManager = new TAsyncClientManager();
TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();
TCalculator.AsyncClient client = new TCalculator.AsyncClient(protocolFactory,clientManager,transport); 

我的服务器正在运行

你能帮我在这里传递uri吗

在同步客户端的情况下,它很简单

 TTransport transport;
  transport = new THttpClient("http://localhost:"+8080+"/calculator");
 transport.open();

Stacks used: Spring boot 2.2.1 & thrift.9


或者我以错误的方式创建了TNonblockingTransport。

基本上,您必须使用TNonblockingSocket以非阻塞方式使用传输。将传输定义更改为使用SocketChannel配置,如下所示:

InetSocketAddress将为您接受端口和url:

 try (SocketChannel socketChannel = SocketChannel.open()) {
        socketChannel.connect(new InetSocketAddress("localhost", port));
        TNonblockingTransport transport = new TNonblockingSocket(socketChannel);
}

 final Asker.AsyncClient client = new Asker.AsyncClient(
                new TCompactProtocol.Factory(),
                new TAsyncClientManager(), transport);

基本上,您必须使用TNonblockingSocket以非阻塞方式使用传输。将传输定义更改为使用SocketChannel配置,如下所示:

InetSocketAddress将为您接受端口和url:

 try (SocketChannel socketChannel = SocketChannel.open()) {
        socketChannel.connect(new InetSocketAddress("localhost", port));
        TNonblockingTransport transport = new TNonblockingSocket(socketChannel);
}

 final Asker.AsyncClient client = new Asker.AsyncClient(
                new TCompactProtocol.Factory(),
                new TAsyncClientManager(), transport);

谢谢但我无法获得任何InetSocketAddress的实现,它更新了method.code中的URI。为什么你需要uri。服务器正在本地主机上运行:8080/calculator。因此,调用处理程序需要传递URI。谢谢。但我无法获得任何InetSocketAddress的实现,它更新了method.code中的URI。为什么你需要uri。服务器正在本地主机上运行:8080/calculator。因此,调用处理程序需要传递URI。