Bibliotecas de terceiros e carregamento de classes
Porque o OSGi utiliza vários carregadores de classes, a utilização transparente de bibliotecas de terceiros extensíveis e configuráveis no Eclipse requer a utilização de um mecanismo específico do Eclipse chamado "carregamento amigo". Este mecanismo permite que um pacote indique quando precisa de assistência para carregar classes ou recursos, quando não consegue encontrá-los entre os respectivos pré-requisitos. Observe que designamos por "bibliotecas extensíveis" as bibliotecas que necessitam ver as classes ou recursos fornecidos pelo código de utilizador (por exemplo, log4j logger mechanism, hibernate,...).
Para indicar a necessidade de carregamento amigo, um pacote deve modificar o seu manifesto e adicionar o seguinte cabeçalho:
Eclipse-BuddyPolicy: <value>
<value> refere-se à política utilizada para procurar classes. A seguir encontram-se as políticas suportadas:
- registered - indica que o mecanismo amigo irá consultar pacotes que foram registados. O pacote que pretenda registar-se num pacote específico irá adicionar ao respectivo manifesto: "Eclipse-RegisterBuddy: <bundleSymbolicName>";
- dependent - indica que as classes e os recursos serão pesquisados de modo transitivo, em todos os dependentes do pacote;
- global - indica que as classes e os recursos serão pesquisados no conjunto global do pacote exportado;
- app - indica que o carregador de classes da aplicação será consultado;
- ext - indica que o carregador de classes da extensão será consultado;
- boot - indica que o carregador de classes de arranque será consultado.