如何检测委派任务中的异常(SSLEngine)

时间:2015-10-06 15:48:14

标签: java exception jsse sslengine

我将SSLEngine与NIO一起使用,为我的应用程序提供非阻塞SSL连接。在握手期间的某个时刻(可能在收到ServerHelloDone之后),SSLEngine要求我处理委派任务。

所以我致电getDelegatedTask并称之为run方法。任务本身会调用X509ExtendedKeyManager.getCertificateChain,而NullPointerException会抛出Handshaker。该例外由checkTaskThrown捕获并存储以供以后报告。

但是报告通过调用仅在收到消息或要发送消息时调用的私有getCertificateChain方法来工作。 但是如果没有checkTaskThrown正确完成,就没有什么可以发送而另一方也没有发送任何内容,所以没有什么可以收到的。因此异常保持隐藏。

由于没有任何一方进展,我们有一个活锁。 除了

之外,我发现无法阻止或检测到这种情况
  • 使用反射来调用home_list_item.xml
  • 使用某个任务/计时器进行超时

这两条路线都不是我要去的路线......

1 个答案:

答案 0 :(得分:1)

任务完成后,您应该重试返回NEED_TASK.

的操作

您需要在KeyManager.

中查找并修复NPE