首页 > 代码库 > Myeclipse 6.5 整合SSH(三)

Myeclipse 6.5 整合SSH(三)

现在,关于“客户信息维护”的SSH框架已经结束,涉及到的后端操作包括增、删、查、改、生成Excel表格等。现在主要说说在创建过程中我经常遇到其中的几个问题。

问题一: 

出现

严重:Exception sending context initialized event to listenerinstance of class org.springframework.web.context.ContextLoaderListener   
org.springframework.beans.factory.BeanCreationException: Errorcreating bean with name ‘entityManagerFactory‘ defined inServletContext resource [/WEB-INF/classes/applicationContext.xml]:Invocation of init method failed; nested exception isjava.lang.ExceptionInInitializerError   
Caused by: java.lang.ExceptionInInitializerError  

或者

Error Creating SessionFactory java.lang.SecurityException: class"org.apache.commons.collections.SequencedHashMap

以上两个报错,是由于Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar即可

 

 

问题二:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 15 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid;
nested exception is org.xml.sax.SAXParseException; lineNumber: 15; columnNumber: 3;
The markup in the document following the root element must be well-formed.

启动服务,出现以上报错 ,网上搜了一下,主要原因有:

1、复制粘贴时,可能粘贴进去乱码了。需要手动输入。

2、在applicationContext.xml文件中,开头有空格,导致识别不了文件。即要确保xml的第一句<?xml version="1.0" encoding="UTF-8"?>之前没有空格。

3、配置文件声明中缺少context。

4、在配置spring的配置文件时,抛出nested exception is org.xml.sax.SAXParseException; lineNumber: 15; columnNumber的异常,原因就是没有正确的添加命名空间。 

 5、在xml中这样引用 properties文件的:<import resource="classpath:application.properties"/>

改成  <context:property-placeholder location="classpath:application.properties" />就好了

6、元素 ‘property‘ 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”。  

可以将

<property name="url">${hibernate.connection.url}</property>  

改为

<property name="url">${hibernate.connection.url}/>

7、开头缺少<web-app>,即XML文档中标记的地方格式不合法,通不过dtd的验证,所以要符合规范,在xml文件的开头加上

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
</web-app>  

 

 问题三:

技术分享
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/classes/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/classes/applicationContext.xml]

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/classes/applicationContext.xml]
View Code

出现如上错误,查了下,网上说的错误原因基本都是:发生在web.xml的配置有问题,要加上如下代码如下:

  在web.xml文件中加入:  

 <context-param>  
     <param-name>contextConfigLocation</param-name>  
     <param-value>/WEB-INF/config/applicationContext.xml</param-value>  
 </context-param>  

或者

<init-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>  
</init-param>  

问题的原因主要是:问题主要由于加载spring的默认配置文件位置一般是在/WEB-INF/下找applicationContext.xml文件,eclipse文件自动生成的applicationContext文件是放在/WEB-INF/classes/applicationContext.xml,所以在默认加载中是找不到applicationContext.xml文件的,必须加入上面配置。 

 

无论加了哪种,我的加上以后又报下面的错:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/classes/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/classes/applicationContext.xml]

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/classes/applicationContext.xml]

1、查到的问题及解决办法有的跟上面的相同,即在web.xml中加入这些配置

<context-param>
    <param-name>contextConfigLocation </param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml </param-value>
</context-param>

或者将IDE自动生成的applicationContext.xml放到WEB-INF 文件夹下即可。

2、可能是你的applicationContext.xml没有正确引入外部数据源

例如:<!-- 引入数据源 -->
   <context:property-placeholder location="classpath:db.properties"/>

 

问题四:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory‘ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from input stream

Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream

 这个错误我遇到好几次,网上找了好多方法来试,都没成功。

最后,将bean下的Cust.hbm.xml文件中的

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">   

改为

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

这样就可以了。

 

Myeclipse 6.5 整合SSH(三)