用ClassPathXmlApplicationContext读取applicationContext.xml在tomcat下运行一段时间报错

用ClassPathXmlApplicationContext读取applicationContext.xml在tomcat下运行一段时间,就报:org.xml.SAMParaseException:An element with the identifier "dataSource2" must appear in the document,请问是怎么回事,能否只初始化一次!

1、
假设class Utils.java文件中有
[code="java"]
public class Utils{
public static ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");

}
[/code]

然后其他类就都可以直接使用Utils.ctx了,无需再实例化,
2、
也可以这样
class Utils.java
[code="java"]
public class Utils{

private ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");

public Object getBean(String beanName){
return ctx.getBean(beanName);
}
}
[/code]

其他类继承,可如下:
[code="java"]
public class OtherClass extends Utils{
public String testMethod(){
Object obj = getBean("testBeanName");
}
}
[/code]

排版比较乱,供参考,希望有用

看看"dataSource2" 这个bean的配置文件,是否正确?

把“dataSource2”先注释掉,看是否还报错,会不会是dataSource2配置错误

每次报错的地方不一样是把?~ 那可能不是配置问题
还有每次都新建ctx实例吗? 这样有违使用spring的Bean管理的初衷了把,建议改善这个问题,可以用工具类或者继承来避免多次实例化ctx。
[code="java"]ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); [/code]