Βιβλιοθήκες τρίτης οντότητας και φόρτωση κλάσεων
Επειδή το OSGi χρησιμοποιεί πολλαπλούς φορτωτές κλάσεων, η διαφανής χρήση βιβλιοθηκών τρίτης οντότητας με δυνατότητα επέκτασης/ρύθμισης στο Eclipse απαιτεί τη χρήση ενός μηχανισμού ειδικά για το Eclipse που ονομάζεται "φόρτωση κώδικα τρίτου κατασκευαστή". Αυτός ο μηχανισμός επιτρέπει σε μια δέσμη να δηλώσει ότι χρειάζεται βοήθεια για τη φόρτωση κλάσεων ή πόρων, όταν δεν μπορεί να τα βρει μεταξύ των προαπαιτούμενων στοιχείων της. Σημειώστε ότι αποκαλούμε "βιβλιοθήκες με δυνατότητα επέκτασης" τις βιβλιοθήκες που πρέπει να βλέπουν κλάσεις ή πόρους που παρέχει ο κώδικας χρήστη (για παράδειγμα μηχανισμός λειτουργίας καταγραφής log4j, αδρανοποίηση,...).
Για να δηλώσει μια δέσμη την ανάγκη της για τη φόρτωση κώδικα τρίτου κατασκευαστή, πρέπει να τροποποιήσει τη δήλωσή της και να προσθέσει την ακόλουθη κεφαλίδα:
Eclipse-BuddyPolicy: <value>
Το <value> αναφέρεται στην πολιτική που χρησιμοποιείται για την αναζήτηση των κλάσεων. Οι υποστηριζόμενες πολιτικές είναι οι εξής:
- registered - δηλώνει ότι ο μηχανισμός φόρτωσης κώδικα τρίτου κατασκευαστή θα συμβουλευτεί δέσμες που έχουν καταχωρηθεί σε αυτόν. Δέσμες που επιθυμούν να καταχωρηθούν σε μια συγκεκριμένη δέσμη, προσθέτουν στη δήλωσή τους: "Eclipse-RegisterBuddy: <bundleSymbolicName>";
- dependent - δηλώνει ότι οι κλάσεις ή οι πόροι θα αναζητηθούν μεταβατικά σε όλα τα εξαρτώμενα στοιχεία της δέσμης
- global - δηλώνει ότι οι κλάσεις ή οι πόροι θα αναζητηθούν στην καθολική ομάδα του πακέτου εξαγωγής
- app - δηλώνει ότι θα αναζητηθεί η συμβουλή του φορτωτή κλάσεων της εφαρμογής
- ext - δηλώνει ότι θα αναζητηθεί η συμβουλή του φορτωτή κλάσεων της επέκτασης
- boot - δηλώνει ότι θα αναζητηθεί η συμβουλή του φορτωτή κλάσεων εκκίνησης