加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Attribute 'singleton' is not allowed to appear in element 'bean' 解决方案

(2017-05-05 17:08:29)
标签:

singleton

spring

分类: 原创

1. 问题描述

spring应用部署过程中抛出如下异常:

 Attribute 'singleton' is not allowed to appear in element 'bean' 

Java代码 

1.  Offending resource: class path resource [applicationContext.xml]; nested exception is org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 48 in XML document from URL [*/*/*.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 48columnNumber: 47cvc-complex-type.3.2.2Attribute 'singleton' is not allowed to appear in element 'bean' 

2.          at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.  

3.          at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.  

4.          at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.  

5.          at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.  

6.          at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.  

7.          at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.  

8.          at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.  

9.          at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.  

10.        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.  

11.        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.  

12.        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.  

13.        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.  

14.        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.  

15.        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.  

16.        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.  

17.        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext 

18.        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext 

19.        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.  

20.        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.  

21.        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.  

22.        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.  

23.        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.  

24.        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.  

25.        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.  

26.        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.  

27.        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.  

28.        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.  

29.        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.  

30.        at org.apache.catalina.core.StandardHost.addChild(StandardHost.  

31.        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.  

32.        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.  

33.        at   

34.        at   

35.        at   

36.        at   

37.        at   

 

 

 从异常信息提示上看出是解析xml文件的时候出了问题,定位到出错的行数,原bean的配置信息如下:

 

Xml代码 

1.   id="readService" class="com.tset.service.impl.DefaultReadService"   

2.          init-method="init" scope="singleton">  

3.           name="appName" value="test">  

4.           name="password" value="I#8NX^px@LoFy&6">  

5.    

 

 

2. 问题分析

 

问题点是scope="singleton"这个地方,涉及到Spring bean中的单例模式配置,而Spring 1.*版本和Spring 2.*版本中的单例模式配置方式存在差异。

1Spring 1.* 配置方式

 

Xml代码 

1.   id="readService" class="com.tset.service.impl.DefaultReadService"   

2.          init-method="init" singleton="true">  

3.           name="appName" value="test">  

4.           name="password" value="I#8NX^px@LoFy&6">  

5.    

 

 

2Spring 2.* 配置方式

 

Xml代码 

1.   id="readService" class="com.tset.service.impl.DefaultReadService"   

2.          init-method="init" scope="singleton">  

3.           name="appName" value="test">  

4.           name="password" value="I#8NX^px@LoFy&6">  

5.    

 

 

3. 解决方案

应用中的Spring版本升级到2.*后,需要对原有xml配置文件中不兼容的地方进行修改,使用singleton="true"即可解决。

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有