使用DSS的TLValidationJob调用onlineRefresh时提示onlineLoader未定义
解决DSS 5.12.1中TLValidationJob.onlineRefresh抛出"The onlineLoader must be defined!"空指针异常
问题根源是你创建的LOTLSource实例未配置在线加载器。虽然你给TLValidationJob设置了onlineDataLoader,但加载欧盟LOTL文件(eu-lotl.xml)的操作是由LOTLSource对象独立发起的,这个对象默认没有绑定加载器,导致请求时触发空指针。
修复方案
修改europeanLOTLSource()方法,给LOTLSource添加在线加载器配置:
public static LOTLSource europeanLOTLSource() { LOTLSource lotlSource = new LOTLSource(); lotlSource.setUrl("https://ec.europa.eu/tools/lotl/eu-lotl.xml"); lotlSource.setPivotSupport(true); lotlSource.setLotlPredicate(TLPredicateFactory.createEULOTLPredicate()); lotlSource.setTlPredicate(TLPredicateFactory.createEUTLPredicate()); // 关键:给LOTLSource绑定你定义的在线加载器 lotlSource.setOnlineDataLoader(onlineLoader()); return lotlSource; }
原因说明
TLValidationJob的onlineDataLoader负责后续加载具体的信任列表(TL)文件,而LOTL(列表的列表)本身的加载逻辑属于LOTLSource的职责范围,它会使用自身的onlineDataLoader发起请求。你之前只给Job配置了加载器,但遗漏了给LOTLSource设置,所以请求LOTL XML时就会抛出The onlineLoader must be defined!的空指针异常。
修改后,LOTLSource会使用你配置的带本地缓存的FileCacheDataLoader加载LOTL文件,后续TLValidationJob再处理信任列表的加载与缓存,就能正常完成证书存储流程了。
内容的提问来源于stack exchange,提问作者Ubi
相关产品推荐
相关产品推荐

