繁体   English   中英

如何使Barcode4J FOP Extension在OSGi中工作(用于使用条形码生成PDF)

[英]How to get the Barcode4J FOP Extension to work in OSGi (for PDF generation with barcodes)

使用JBoss Fuse,我有一个Camel-FOP端点组件,该组件可以成功生成PDF作为路由的一部分。 一项新要求是在PDF输出中包括动态条形码生成。 它必须在OSGi容器中运行。 尽管FOP和Barcode4J都是捆绑包,但FOP扩展(barcode4j-fop-ext:21)只是一个普通的jar,似乎没有可用的捆绑包版本。

我首先尝试通过bnd包装FOP扩展并将其部署,但是FOP找不到/看到该扩展。 这种工作方式是在运行时FOP查找由类路径中的可选扩展提供的名为org.apache.fop.fo.ElementMapping的任何文本文件。 然后,FOP使用该文本文件中提供的类名称-class.forName(...)动态实例化扩展Jar中的类。

FOP Extension Jar将纯文本文件保存在META_INF / services下,并且必须对FOP包可见,以及Extension Jar中的几个Java包。 此文本文件包含字符串“ org.krysalis.barcode4j.fop.BarcodeElementMapping”,它对应于FOP捆绑包必须实例化的FOP扩展内的类。

编辑:我还应该补充一点,我已经查看了FOP软件包清单,并且没有可选的导入或对我正在使用的FOP Extension Jar的其他引用。 我认为扩展的想法是,它们是运行时可发现的,因此没有被隐式引用。

有什么方法可以使它在OSGi中工作,还是我应该在寻找其他解决方案?

听起来您的FOP正在寻找服务扩展。 确保您还安装了Aries SPI-Fly功能。 此功能将查找那些服务扩展META-INF / services,并使那些扩展可用于需要这些扩展的其他捆绑软件。 那应该已经为您完成了大部分工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM