簡體   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