如何使Barcode4j FOP扩展在OSGI中工作(用于使用条形码的PDF生成)



与JBOSS保险丝一起工作,我有一个骆驼 - 式端点组件,该组件成功生成PDF作为路线的一部分。一个新的要求是在PDF输出中包括动态条形码生成。这必须在OSGI容器中运行。虽然FOP和Barcode4j都是捆绑包,但FOP扩展(barcode4j-fop-ext:21(只是一个普通的罐子,似乎没有捆绑版本。

我首先尝试通过BND包裹FOP扩展名并部署它,但是FOP找不到/看到扩展名。此工作的方法是,在运行时FOP查找任何名为org.apache.fo.fo.fo.fo.fo.elementmapping的文本文件,由classPath中的可选扩展提供。然后,FOP使用该文本文件中提供的类名称 - class.forname(...(。

FOP扩展程序JAR将纯文本文件保留在Meta_inf/Services下,FOP捆绑包必须可见,以及扩展JAR中的几个Java软件包。此文本文件包含字符串" org.krysalis.barcode4j.fop.barcodeelementmapping",该字符与FOP扩展程序中的类相对应,该类别必须实例化。

编辑:我还要补充一点,我已经查看了FOP捆绑销售清单,并且没有可选的导入或我正在使用的FOP延期jar的其他引用。我认为使用扩展的想法是它们是可以发现的运行时,因此没有隐含地提及。

有什么办法可以在OSGI中工作,还是我应该看其他解决方案?

听起来您的FOP正在寻找服务扩展。确保您还安装了Aries Spi-Fly功能。此功能查找这些服务扩展元I-INF/服务,并将其提供给需要这些扩展名的其他捆绑包。那应该已经为您完成了大部分工作。

最新更新