이와 같은 정보를 일일이 작성해서 번들을 만들기는 너무가 성가신 일이다. 따라서 이를 자동으로 처리해주는 툴이 있는데 이것이 BND 툴이다.
다음 사이트에서 다운로드 받을 수 있다.
BND 툴로 OSGi 번들을 빌드하거나 3rd party jar 파일들을 OSGi 번들로 변환할 수 있다.
가령 netty-all-4.0.26.Final.jar 파일을 OSGi 번들로 변환할려면 다음과 같이 할 수 있다.
우선 BND 툴을 다운로드 받은 후 cmd 상에서 biz.aQute.bnd-2.3.0.jar 파일이 있는 곳으로 위치한 후에 아래와 같은 명령을 실행하면 된다.
>java -jar biz.aQute.bnd-2.3.0.jar wrap -o ../netty-all-4.0.26.Final.jar -v 4.0.26.Final -b io.netty netty-all-4.0.26.Final.jar
wrap은 jar 파일을 OSGi로 변환하는 명령이다. -o 옵션은 변환된 파일명을 -v 는 버전, -b 옵션은 번들의 symbolic name을 의미한다.
위와 같이 output 파일명이 기존 파일명과 같을 때에는 변환 실패하게 되므로 디렉토리 위치를 다르게 해줘야 한다.
메이븐 플러그인으로도 BND 툴을 사용할 수 있다. 이는 다음 url을 참조하면 된다.
메이븐 플러그인 사용 시 주의할 점은 리플렉션 코드에서 다른 번들의 클래스를 참조한다면 이를 자동으로 식별할 수가 없게 된다. 이에 따라 번들을 정상적으로 만들어서 배포했는데 어떤 class를 참조할 수가 없다며 에러가 발생하게 된다.
보통 이와 같은 경우는 다음과 같은 jdbc 드라이버를 참조하는 코드를 사용할 때 많이 발생한다.
Class.forName("com.mysql.jdbc.Driver");
이럴 때에는 Import-Package에 com.mysql.jdbc 를 명시해주어야 한다.
댓글 없음:
댓글 쓰기