Πώς μπορώ να αποκτήσω το OSGi BundleContext για μια εφαρμογή Eclipse RCP;

ψήφοι
10

Έχω πάρει ακριβώς ξεκίνησε με μια εφαρμογή Eclipse RCP, είναι ουσιαστικά μόνο μία από τις παρεχόμενες «hello world» δείγματα.

Όταν οι μπότες εφαρμογή επάνω, θα ήθελα να εξετάσουμε τις παραμέτρους γραμμής εντολών μου και να αρχίσει κάποιες υπηρεσίες, σύμφωνα με αυτούς. Μπορώ να πάρω τις παραμέτρους γραμμής εντολών στο IApplication.start :

public Object start(IApplicationContext context) {
   String[] argv = (String[]) 
       context.getArguments().get(IApplicationContext.APPLICATION_ARGS)));
}

Αλλά πώς μπορώ να πάρω το BundleContext, έτσι ώστε να μπορώ να εγγραφείτε υπηρεσιών; Δεν φαίνεται να είναι στο IApplicationContext.

Δημοσιεύθηκε 18/02/2009 στις 06:47
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
12

Tricky εσωτερική τρόπο:

InternalPlatform.getDefault().getBundleContext()

θα μπορούσε να το κάνει.

Θα βρείτε ένα παράδειγμα σε αυτή την κατηγορία

public class ExportClassDigestApplication implements IApplication {

    public Object start(IApplicationContext context) throws Exception {
        context.applicationRunning();

        List<ExtensionBean> extensionBeans = ImpCoreUtil.loadExtensionBeans(&quot;com.xab.core.containerlaunchers&quot;);
        for (ExtensionBean bean : extensionBeans) {
            ILauncher launcher = (ILauncher) bean.getInstance();
            launcher.start();
        }
        ClassFilter classFilter = new ClassFilter() {
            public boolean isClassAccepted(Class clz) {
                return true;
            }
        };

        PrintWriter writer = new PrintWriter( new File( "C:/classes.csv"));

        Bundle[] bundles = InternalPlatform.getDefault().getBundleContext().getBundles();

Κατάλληλο τρόπο :

Κάθε plug-in έχει πρόσβαση στο δικό του πλαίσιο δέσμη του.

Απλά βεβαιωθείτε ότι το plug-in τάξη σας παρακάμπτει την έναρξη (BundleContext) μέθοδο. Στη συνέχεια, μπορείτε να το αποθηκεύσετε σε ένα μέρος μαθήματα που σου plug-in μπορεί εύκολα να έχει πρόσβαση

Σημειώστε το πλαίσιο πακέτο παρέχεται σε ένα plug-in είναι ειδικά για αυτό και δεν πρέπει ποτέ να μοιραστεί με άλλα plug-ins.

Απαντήθηκε 18/02/2009 στις 08:49
πηγή χρήστη

ψήφοι
14

Απλά ήρθε σε αυτό κάνοντας μια αναζήτηση στο διαδίκτυο, και σκέφτηκα ότι θα προωθήσει το νέο πρότυπο τρόπο OSGi r4.2 (όπως προβλέπεται από το Equinox αποστέλλονται με Eclipse 3.5). Εάν δεν έχετε έναν ενεργοποιητή, και δεν θέλετε να δημιουργήσετε ένα μόνο για να αποθηκεύουν προσωρινά το πλαίσιο πακέτο, μπορείτε να χρησιμοποιήσετε FrameworkUtil.getBundle. Τροποποίηση του προηγούμενου παραδείγματος:

import org.osgi.framework.FrameworkUtil;

public class ExportClassDigestApplication implements IApplication {
    public Object start(IApplicationContext context) throws Exception {
        context.applicationRunning();
        BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass())
                                                   .getBundleContext();
    }
}
Απαντήθηκε 16/08/2009 στις 06:06
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more