2017-01-21 3 views
-2

J'ai une classe d'activateur de faisceau et quelques codes là. Je dois utiliser @Autowired dans ma classe d'activateur de bundle. Ça ne marche pas. Voici mon paquet classe Activator,Comment utiliser la référence de service OSGi dans d'autres classes?

public class ProviderActivator implements BundleActivator { 

    @Autowired 
    public TestingClass testingClass; 

    public void start(final BundleContext bundleContext) throws Exception { 
     System.out.println("bundle starter!!!!!!!!!!!!!!" +testingClass); 
     } 
} 

SOP testingClass est nulle. Analyse contextuelle Spring ajoutée dans spring-context.xml.

ici ma suggestion est,

le haricot injecté après la classe BundleActivator chargée.

Comment prévenir cela? pourquoi le bean est nul au démarrage de la classe bundle?

+0

Hi @Sridhar dépend de la façon dont votre offre est lancée. Si vous utilisez Java pur, ou Spring ou Blueprint. Blueprint est très similaire à Spring, vous utilisez un fichier XML pour configurer les beans et injecter dans d'autres classes. Vous voudrez peut-être lire ceci: http://blog.knowhowlab.org/2010/10/osgi-tutorial-4-ways-to-activate-code.html –

+0

Ensuite, veuillez éditer votre question et spécifier comment activer votre bundle –

Répondre

0

Pourquoi voudriez-vous même que cela fonctionne? La classe d'activateur est instanciée par le Framework OSGi et @Autowired n'est pas une fonctionnalité OSGi.