2017-05-05 11 views
0

JBoss Fuse로 작업하면서 경로의 일부로 PDF를 성공적으로 생성하는 Camel-FOP 끝점 구성 요소가 있습니다. 새로운 요구 사항은 동적 바코드 생성을 PDF 출력에 포함시키는 것입니다. 이것은 OSGi 컨테이너에서 실행해야합니다. FOP 및 Barcode4J는 모두 번들이지만 FOP Extension (barcode4j-fop-ext : 21)은 단순한 jar 일 뿐이며 번들 버전이없는 것 같습니다.OSGi에서 작동하도록 Barcode4J FOP Extension을 얻는 방법 (바코드가있는 PDF 생성 용)

처음 FOP 확장 프로그램을 bnd를 통해 랩핑하고 배포했지만 FOP는 확장 프로그램을 찾지 못했습니다. 이것이 작동하는 방식은 런타임에 FOP가 classpath에서 옵션 확장자로 제공되는 org.apache.fop.fo.ElementMapping이라는 텍스트 파일을 찾습니다. 그런 다음 FOP는 해당 텍스트 파일 (class.forName (...)) 내에 제공된 클래스 이름을 사용하여 확장 Jar의 클래스를 동적으로 인스턴스화합니다.

FOP 확장 Jar는 일반 텍스트 파일을 확장 모음의 여러 Java 패키지뿐만 아니라 FOP 번들에 표시되어야하는 META_INF/services 아래에 유지합니다. 이 텍스트 파일에는 FOP 번들이 인스턴스화해야하는 FOP Extension 내의 클래스에 해당하는 문자열 "org.krysalis.barcode4j.fop.BarcodeElementMapping"이 들어 있습니다.

편집 : 나는 또한 FOP 번들 매니페스트를 살펴 봤으며 FOP 확장 Jar에 대한 선택적 가져 오기 또는 다른 참조가 없다는 것을 추가해야합니다. 내가 생각하기에 확장 기능을 가진 아이디어는 런타임에서 발견 가능하므로 암묵적으로 참조되지 않는다는 것입니다.

OSGi에서이 기능을 사용할 수있는 방법이 있습니까? 아니면 다른 솔루션을 찾아야합니까?

+0

FOP 확장 프로그램이 OSGi를 지원하지 않는다면 쉽게 할 수 있다고 가정하지 않습니다. 낙타 - fop 및 fop 번들에서 동적 가져 오기를 사용하도록 설정할 수 있습니다. Karaf에는 dev-dynamic-import 또는 이와 유사한 명령이 있습니다. –

+0

비 -osgi 항아리를 포장하고 카라프가 당신을 위해 번들을 만들도록하지 않았습니까? http://stackoverflow.com/questions/32889600/install-depency-jar-file-in-apache-karaf-2-3-10 –

답변

1

FOP와 같은 사운드가 서비스 확장을 찾고 있습니다. Aries SPI-Fly 기능이 설치되어 있는지 확인하십시오. 이 기능은 META-INF/services라는 서비스 확장을 찾아 해당 확장이 필요한 다른 번들에 제공합니다. 그것은 이미 당신을 위해 대부분의 일을해야합니다.