BeanFactory pas initialisé ou déjà fermé appel "actualiser" avant d'accéder à des haricots via l'ApplicationContext
J'ai ce web.xml fichier
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-context.xml /WEB-INF/core-spring-beans.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
et applicationContext qui comprennent les Haricots
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
<jee:jndi-lookup id="dataSource" jndi-name="pull_DS" resource-ref="true"/>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"
p:configLocation="classpath:pull/DBUtils/sqlMapConfig.xml"
p:dataSource-ref="dataSource"/>
<bean id="daoBase" abstract="true"
p:sqlMapClient-ref="sqlMapClient"/>
<bean id="Photo"
class="pull.DBUtils.PopPhotoImpl"
parent="daoBase"/>
<bean id="Trunkcate"
class="pull.DBUtils.TrunkcateCifSrcImpl"
parent="daoBase"/>
<bean id="applicationContextProvder"class="pull.DBUtils.ApplicationContextProvider"/>
</beans>
et la ApplicationContextProvider.java pour ApplicationContext
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext ctx = null;
public static ApplicationContext getApplicationContext() {
return ctx;
}
public void setApplicationContext(ApplicationContext ctx)
throws BeansException {
this.ctx = ctx;
}
}
ET j'ai donc défini une méthode returnCleanUp dans TrunkcateCifSrcImpl Bean
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
public class TrunkcateCifSrcImpl extends iBatisTemplate implements TrunkcateCifSrc{
public int retTrunkcateReady() {
return super.trunkcateReady("CifSrc_Trunkcate.cleanUp");
}
public static int returnCleanUp() {
TrunkcateCifSrcImpl trunkcate = null;
int result;
try {
ApplicationContext ctx = ApplicationContextProvider
.getApplicationContext();
trunkcate = (TrunkcateCifSrcImpl) ctx.getBean("Trunkcate");
result = trunkcate.retTrunkcateReady();
}
catch (NoSuchBeanDefinitionException noBeanE) {
throw noBeanE;
} catch (BeansException beanE) {
throw beanE;
}
catch (Exception e) {
throw e;
}
return result;
}
}
La iBatisTemplate classe pour renvoyer une valeur de la carte "trunkcateReady" (valeur renvoie dans iBatis fonction appelée à partir de la base de données)
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.SqlMapClientCallback;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.ibatis.sqlmap.client.SqlMapExecutor;
public class iBatisTemplate extends SqlMapClientDaoSupport {
public int trunkcateReady(final String id) {
Map<String, Integer> map = new HashMap<String, Integer>(1);
getSqlMapClientTemplate().queryForObject(id, map);
return map.get("trunkcateReady");
}
}
mais maintenant, une fois de temps en temps si j'appelle cette méthode de Trunkcate bean je recevrais que exceptionm IllegalStateException, personne ne sait ce que je peux faire pour résoudre ce problème??
do{
cleanUp = TrunkcateCifSrcImpl.returnCleanUp();
if(cleanUp==1)
{
logger.debug("Going to sleep........");
Thread.sleep(65000);
}
}while(cleanUp!=0);
Trace de la pile d'exception que j'ai eu, c'est habituellement le cas la première fois aller à travers la boucle puis après Fil.sommeil(65000), elle va repartir en normalement
2014-02-14 12:23:45,646 GMT-0800 [managedServer=weeManagedServer-1]pull.quartzScheduler.PullingPDRTask - Pull failed....
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
at pull.DBUtils.TrunkcateCifSrcImpl.returnCleanUp(TrunkcateCifSrcImpl.java:21)
at pull.quartzScheduler.PullingPDRTask.excute(PullingPDRTask.java:257)
at pull.quartzScheduler.SchedulerService.executePullingPDRTask(SchedulerService.java:31)
at pull.quartzScheduler.PullStatefulJob.executeInternal(PullStatefulJob.java:42)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Merci! toute entrée serait utile. - Je déployer mon application sur weblogic server 1036jdk1.7. À l'aide de printemps 3.1.1. Merci à tous!
Aussi, le truncateDAO. Est-il mentionné en tant que dépendance pour votre TruncateCifSrcImpl classe? Il ne marche pas montrer de cette façon dans le xml de config
Y compris mon stacktrace où il a échoué. Il a échoué lorsqu'il tente de getBean "Trunkcate". Cette toute demande également à l'aide de Quartz pour la planification et se réveille toutes les 30 minutes, "returnCleanUp" est une partie de la "executePullingPDRTask". Tant que le nettoyage de retour encore!=0, "returnCleanUp" sera n'arrêtait pas d'appeler. Ps: je ne sais pas si ça aide, je ony ensemble quartz thread =1 afin de réduire plusieurs threads. Merci!
OriginalL'auteur eclipznightz | 2014-02-17
Vous devez vous connecter pour publier un commentaire.
J'ai eu un Problème similaire quand j'ai travaillé sur Spring MVC en utilisant Tomcat 6, mais j'avais par erreur déclaré plusieurs classes de haricots avec le même nom , vérifiez vos classes une fois pour toute ambiguïté . Veuillez envoyer la trace de la pile complète .
Juste Au cas où si elle contribue à ce qui a été mon erreur donc j'ai eu cette erreur .
Annotation-spécifié bean name 'countryServiceImpl' classe du bean [com.ssrv.fms.service.contact.impl.CountryServiceImpl] les conflits existants, non compatible bean définition du même nom et la classe [com.ssrv.fms.service.admin.impl.CountryServiceImpl]
OriginalL'auteur Jithesh Chandra
Vous pouvez consulter le dossier cible de votre projet, et de vérifier si les fichiers de configuration sont là.
Et je pense que vous devriez dire plus de détails de la
errorInfo
, il sera utile.J'ai rencontré le même problème que vous avez. Mais j'avais plus de détail informations d'erreur en vertu de la
Il dit
J'ai donc vérifier le dossier cible du projet, le "printemps" le dossier est manquant, qui tous mes fichiers de configuration. Bien que je ne sais pas pourquoi il n'est pas là.
J'ai donc supprimer le dossier cible du projet, et de le reconstruire. Et le problème est résolu. Le "printemps" dossier apparaît.
Avant et après:
OriginalL'auteur liyuhui