spring3.1.1与commons-dbcp1.2的冲突?
    
- 背景: ? ?最近项目用到了 spring mvc 和 dbcp数据源。因为以前都是用的struts2,所以没有昨天碰到的这个问题:启动spring的时候解析spring xml时候报错。
 
- 环境介绍: ?首先maven dependences了spring + spring mvc(version:3.1.1.RELEASE),然后配置好之后启动发现报错,错误时说bean xml的解析有问题:具体错误如下
Caused by: org.xml.sax.SAXParseException: cos-all-limited.1.2: An ''all'' model group must appear in a particle with '{'min occurs'}'='{'max occurs'}'=1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition.
	at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:267)
	at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:201)
	at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
	... 49 more
这个时候我的commons-dbcp用的是:
                <dependency>
		   <groupId>commons-dbcp</groupId>
		   <artifactId>commons-dbcp</artifactId>
		   <version>1.2</version>
		</dependency>
??我发现是bean xml解析有问题,我进入commons-dbcp 1.2 的pom中看看,发现其中有个依赖:
    <dependency>
      <groupId>xerces</groupId>
      <artifactId>xerces</artifactId>
      <version>2.0.2</version>
    </dependency>
?于是我在我自己的POM.xml中将dbcp的dependence改为了:
               <dependency>
		    <groupId>commons-dbcp</groupId>
		     <artifactId>commons-dbcp</artifactId>
		     <version>1.2</version>
		    <exclusion>
	    	          <groupId>xerces</groupId>
			  <artifactId>xerces</artifactId>
		       </exclusion>
		</dependency>
?这样子就不报错了。这就是这个xml解析的jar包冲突(具体我没时间去看源代码),后来我去看了下dbcp1.3+的pom,发现只要用1.4的就ok,不会有冲突。
             <dependency>
		  <groupId>commons-dbcp</groupId>
		  <artifactId>commons-dbcp</artifactId>
		  <version>1.4</version>
		</dependency>
?
 
- 当然,虽然问题表面解决,但是没仔细去看源代码,先记一笔,有时间去弄个究竟。
 
- 如果有人也碰到过类似问题,不防留言指点指点。