0 votes

Les beans d'usine de Spring ne sont pas toujours initialisés avant d'être utilisés

J'utilise spring pour initialiser mes beans. J'ai configuré un bean que j'ai l'intention d'utiliser comme un factory bean.

<bean id="jsServicesFactory" class="x.y.z.JSServicesFactory" />

C'est une classe très basique - qui a 4 méthodes getter. Un exemple est

 public final PortletRegistry getPortletRegistry() {
    PortletRegistry registry = (PortletRegistry) JetspeedPortletServices
        .getSingleton().getService("PortletRegistryComponent");
    return registry;
}

J'ai un deuxième haricot qui utilise ce haricot d'usine pour définir une de ses propriétés.

<bean id="batchManagerService" class="x.y.z.BatchManagerService">
...
<property name="portletRegistry">
   <bean factory-bean="jsServicesFactory" factory-method="getPortletRegistry" />
</property>
     ...

Lorsque je démarre mon serveur dans RAD, tout fonctionne parfaitement. Cependant, lorsque je déploie sur Linux, je parfois obtenir l'erreur suivante

ERROR org.springframework.web.context.ContextLoader - L'initialisation du contexte a échoué. org.springframework.beans.factory.BeanCreationException : Erreur lors de la création du bean avec le nom 'batchManagerService' défini dans la ressource ServletContext [/WEB-INF/context/Root/batchManagerContext.xml] : Cannot create inner bean 'jsServicesFactory$created#70be70be' while setting bean property 'portletRegistry' ; nested exception is org.springframework.beans.factory.BeanCreationException : Erreur lors de la création du bean avec le nom 'jsServicesFactory$created#70be70be' défini dans la ressource ServletContext [/WEB-INF/context/Root/batchManagerContext.xml] : L'instanciation du bean a échoué ; l'exception imbriquée est org.springframework.beans.factory.BeanDefinitionStoreException : La méthode Factory [public final org.apache.jetspeed.components.portletregistry.PortletRegistry x.y.z.JSServicesFactory.getPortletRegistry()] a généré une exception ; l'exception imbriquée est java.lang.NullPointerException.

J'ai essayé d'ajouter depends-on="jsServicesFactory" à mon bean batchManagerService mais cela n'a pas fonctionné.

Des idées ?

Merci

0voto

skaffman Points 197885

L'indice est dans la trace de la pile, bien qu'elle soit profondément enfouie :

L'exception imbriquée est java.lang.NullPointerException

Quelque chose dans votre code est en train de lancer un NPE pendant l'initialisation des beans, et cela se propage en haut de la pile, en étant enveloppé dans d'autres exceptions au fur et à mesure.

Trouvez la cause profonde de ce NPE, et cela devrait résoudre le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X