2010-03-16 3 views
0

J'utilise le ressort pour initialiser mes haricots. J'ai configuré un bean que j'ai l'intention d'utiliser comme un haricot d'usine.Les haricots d'usine de printemps ne sont pas toujours initialisés avant d'être utilisés

<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 2ème haricot qui utilise ces grains 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> 
    ... 

Quand je commence mon serveur dans RAD, tout cela fonctionne parfaitement. Cependant, quand je Linux à déployer, je parfois obtenir l'erreur suivante

erreur org.springframework.web.context.ContextLoader - initialisation du contexte n'a pas org.springframework.beans.factory.BeanCreationException: Erreur de création de haricot avec le nom « batchManagerService 'défini dans la ressource ServletContext [/WEB-INF/context/root/batchManagerContext.xml]: Impossible de créer le bean interne' jsServicesFactory $ created # 70be70be 'lors de la définition de la propriété bean' portletRegistry '; l'exception imbriquée est 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: méthode d'usine [public final org.apache.jetspeed.components.portletregistry.PortletRegistry x.y.z.JSServicesFactory.getPortletRegistry()] a levé l'exception; l'exception imbriquée est java.lang.NullPointerException

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

Des idées?

Merci

Répondre

0

L'indice est dans la trace de la pile, mais enfoui au plus profond en elle:

exception imbriquée est java.lang.NullPointerException

Quelque chose dans votre code est de lancer un NPE pendant l'initialisation des beans, et cela propage la pile, en étant re-enveloppé dans d'autres exceptions comme il va. Trouvez la cause première de ce NPE, et cela devrait résoudre le problème.

+0

Bonjour, merci pour vos commentaires. Je crois que le NPE est que jsServicesFactory n'est toujours pas initialisé avant d'être utilisé et donc lance un NPE. Cependant, juste pour être sûr que j'ai ajouté la journalisation à la méthode getPortletRegistry(). Je vais redéployer vers Linux et vous laisser savoir le résultat. Merci – aos

+0

Bonjour, Je l'ai testé à nouveau avec des messages de journal (tout ce que j'ai ajouté était des messages de journal, rien d'autre) et je ne reçois aucune erreur cette fois. Ce qui me fait penser que c'est un problème de synchronisation ou quelque chose comme ça? – aos

+0

@aos Très probablement, oui, mais je maintiens que c'est une exception NullPointerException dans votre propre code qui déclenche des exceptions en cascade depuis Spring. – skaffman

Questions connexes