SSH在整合过程中遇到的错误总结
1:Error creating bean with name 'sessionFactory' defined in ServletContext .......
到WebApp的lib目录底下,把属于Hibernate 3.2 Core的" asm.jar"、"asm-attrs.jar"和"cglib-2.1.3.jar"都删掉或者把属于Spring AOP Core的" asm-2.2.3.jar"、"asm-commons-2.2.3.jar"、"asm-util-2.232.jar"和"cglib-nodep-2.1_3.jar"都删掉。任意删除其中一个组合都可以解决问题,不过我留意到Spring引用的jar比较新,要删就删Hibernate 3.2 Core的组合(其实我试过,直接删cglib-2.1.3.jar就OK了,原因不明)。
2:No WebApplicationContext found: no ContextLoaderListener registered?
说法1:
spring中提供 ContextLoaderListenter类,用来加载context的xml文件。
spring为struts提供ContextLoaderPlugIn类,此类也可以加载context的xml文件。
区别在于,两种方式加载的WebApplicationContext,以不同的Key存放在ServletContext中。而如果你定义了HibernateFilter的话,spring会利用WebApplicationContextUtils来获取WebApplicationContext,而此类并不识别ContextLoaderPlugIn类所加载的上下文,此时便会抛出异常: No WebApplicationContext found: no ContextLoaderListener registered?
利用ContextLoaderListenter来加载dao、service级别的context,而对于struts的action,用ContextLoaderPlugIn加载。
出现了No WebApplicationContext found: no ContextLoaderListener
registered异常,此问题产生的原因是因他的资源文件没加载进来所以找不到文件引起,于是我在web.xml中加入了如下语句:
<!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔此参数用于后面的Spring-Context loader -->
<servlet> <servlet-name>SpringContextServlet </servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>1 </load-on-startup> </servlet>