我一直在关注Android的javax.net.ssl软件包,但我仍然对如何使用底层JNI粘合剂感到困惑。
从我看到的,javax.net.ssl包下的所有类(/ libcore / x-net / src / main / java / javax / net / ssl)都是抽象的,不直接实现功能。
上述所有功能都在org.apache.harmony.xnet.provider.jsse文件夹中实现(/ libcore / x-net / src / main / java / org / apache / harmony / xnet / provider / jsse),这个实现调用了底层的JNI C代码。
如果用户直接从代码中调用抽象类,是否有人能够告诉我提供程序如何链接到抽象类。我认为通常用户会调用子类,但在这种情况下,它似乎是相反的。
谢谢,
克里斯
答案 0 :(得分:0)
好的,经过一些研究,我想我已经把头包裹起来了。看起来Apache Harmony充当javax.net.ssl包的Java安全提供程序。
因为OpenSSL正在底层使用,所以必须使用JNI来允许Java与OpenSSL的C代码通信。
提供程序在名为“java.security”的文件中定义,可以在以下链接中找到向Java添加提供程序的概述:http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html