thriftServer: TThreadedSelectorServer
, когда я использую Runtime.getRuntime (). Exe c (cmd) или Apache DefaultExecutor для выполнения команды linux 'ls -al xxxx', всегда появляется:
WARN Thread-3 org.apache.thrift.server.TThreadedSelectorServer - Created new Selector.
WARN Thread-3 org.apache.thrift.server.TThreadedSelectorServer - Replace new selector success.
ERROR Thread-3 org.apache.thrift.server.TThreadedSelectorServer - run() on SelectorThread exiting due to uncaught error
java.nio.channels.CancelledKeyException
at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:73)
at sun.nio.ch.SelectionKeyImpl.interestOps(SelectionKeyImpl.java:82)
at org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.changeSelectInterests(AbstractNonblockingServer.java:441)
at org.apache.thrift.server.AbstractNonblockingServer$AbstractSelectThread.processInterestChanges(AbstractNonblockingServer.java:191)
at org.apache.thrift.server.TThreadedSelectorServer$SelectorThread.run(TThreadedSelectorServer.java:548)
код клиента
public static void test()
{
int count = 0;
for (;;)
{
try (TSocket tSocket = new TSocket("xxxx", xxxx);
TTransport trans = new TFramedTransport(tSocket);)
{
System.out.println("Port: " + tSocket.getSocket().getLocalPort());
TProtocol protocol = new TBinaryProtocol(trans);
TMultiplexedProtocol tmp = new TMultiplexedProtocol(protocol, xxxx.class.getSimpleName());
xxx.Client client = new xxx.Client(tmp);
trans.open();
String targetPath = client.xxx("ls -al xxx");
System.out.println(targetPath + "--" + (count++));
}
catch (Exception e)
{
e.printStackTrace();
}
}
}