0
。 但当我致电异步方法回调,我得到这个错误:我正在开发一个Apache Thrift服务器/异步客户端应用程序,它可以读取Apache Thrift异步客户端的调用框架大小失败问题
java.io.IOException: Read call frame size failed
at org.apache.thrift.async.TAsyncMethodCall.doReadingResponseSize(TAsyncMethodCall.java:234)
at org.apache.thrift.async.TAsyncMethodCall.transition(TAsyncMethodCall.java:192)
at org.apache.thrift.async.TAsyncClientManager$SelectThread.transitionMethods(TAsyncClientManager.java:143)
at org.apache.thrift.async.TAsyncClientManager$SelectThread.run(TAsyncClientManager.java:113)
我在这里做了一些研究的计算器,但没有为我工作。
这是我的服务器代码:
/**
* initialisiert die @see {ClientAccessPointImpl} Verbindung, damit der Client eine Verbindung mit dem Serve
* aufbauen kann
*/
private void initialisiereThriftServer()
{
clientAccessPoint = new LoginAndRegisterServiceImpl();
processor = new Processor<>(clientAccessPoint);
Runnable server = new Runnable()
{
@Override
public void run()
{
try
{
TNonblockingServerSocket serverTransport = new TNonblockingServerSocket(
ApplicationConfigurationLoader.getIntProperty("core.thrift.port"));
TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();
TServer server = new TThreadedSelectorServer(new TThreadedSelectorServer.Args(serverTransport)
.protocolFactory(protocolFactory).inputTransportFactory(new TFramedTransport.Factory())
.outputTransportFactory(new TFramedTransport.Factory()).processor(processor)
.workerThreads(
ApplicationConfigurationLoader.getIntProperty("core.thrift.workerThreads")));
server.serve();
}
catch (TTransportException e)
{
LOGGER.log(Level.SEVERE , "Der Server konnte nicht gestartet werden!" , e);
}
}
};
new Thread(server).start();
}
有没有人一个想法,为什么这个代码的失败?我用了一个使用TFramedTransport的NonblockingSocket,我读到了这个....
希望你能帮助我! Jonas
是的,你是对的,我使用正常的处理器而不是AsyncProcessor。我有麻烦找到正确的用法,你能给我一个例子,我必须实现一个asyncProcessor吗? – Dudei95
@ Dudei95它可能类似于'CreditManager.AsyncProcessor处理器=新的CreditManager.AsyncProcessor (服务);'其中'服务'是'CreditManagerService'的一个实例 –
@ Dudei95请标记为答案是否有效 –