SSH框架中. Error creating bean with name 'sessionFactory' 问题的解决!

这个问题,折腾了2天的时间终于解决了!!!  特此记录,并且分享解决问题的思路和解决的办法。

将SSH框架搭建的项目放在测试环境运行的时候,出现错误:

   Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException

     从错误的信息可以看到是创建‘sessionFactory’出现错误,并且是NullPointerException,第一直觉就是数据库连接的信息错了,然后就是检查对应的数据库的连接的username,password,url这些,但是就是一直报错,实在看不出来有什么错误,然后找度娘进行查找,也没有找到解决办法,然后Google,给出的解决的方案是jar冲突造成的,我看了我的lib,有很多的重复的jar,并且使用的struts2和hibernate都非常老,hibernate 3和struts2-2.3.2 这个版本的,Google上很多答案是表示hibernate3有问题,但是我这个应该不是这个原因,因为生产环境都是没问题的,最后,经过重重的排查,和2天时间的去思考,终于解决了问题!!!

    下面给出我解决问题的思路和办法,已经出现这个问题的解决的其他的方法: 

 1.第一个原因:出现这个问题的根源是sessionFactory创建失败,一般的问题是使用的hibernate,则entity和对应的数据表的映射问题,如果你用的hbm.xml则检查xml中的映射是否一致(注意大小写),如果使用的注解,则检查@Column(name="xx")中对应的数据表的字段,同样注意大小写。检查数据的连接的URL,username,password这些基本的就很直接的。

2.第二个原因:项目中的jar包的问题,有可能jar包出现冲突和这个版本的jar是有问题的,所以去lib下看看是否是jar的问题。比如hibenrate和spring以及struts2整合的时候,其中spring的:asm-commons-2.2.2.jar,asm-util-2.2.2.jar,asm-2.2.2.jar和hibernate的asm.jar,asm-attrs.jar,则asm-2.2.2.jar和asm.jar出现冲突。所以排查一个jar的冲突。

3.第三个原因:这个原因就是我出现的问题之一,上面出现的问题都不能解决我遇到的这个问题,然后只能自己去一点点去排查了,因为MAC的换行符是CR,而测试环境是windows,换行符是CRLF,所以会出现jdbc.properties的格式出现问题,导致无法解析。

4.第四个原因:这个原因是我解决了问题的主要原因,虽然解决了格式问题,但是依然报错,NullPoniterException很奇葩,然后只能一点点的去看,出现这个问题,出现这个问题如果不是字段映射的问题,应该就是DataSource的问题,所以去检查DataSource,结果发现项目中使用到的DataSource的class不是第三方的dataSource,而是自定义的DataSource,然后我仔细查看了这个自定义的DataSource,发现 里面的方法居然会对数据库的连接的password进行一个解密的操作,看到这,我就知道问题终于可以解决问题了,查看原本的jdbc.properties的password的配置,发现果然是一个加密之后的字符串,所以我尝试使用dbcp的DataSource,并导入commons-dbcp-1.2.2.jar和commons-pool-1.3.jar 这两个就可以了,然后改变DataSource引用的class,然后运行,成功!!! 终于没有报错。  

    贴出来我修改成功之后的配置:

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${db.driver}"/>    
        <property name="url" value="${db.url}"></property>
        <property name="username" value="${db.user}"/>
        <property name="password" value="${db.password}"></property>
 </bean>

   看来还是不能一直找度娘,还是要先自己思考问题的原因......  ,要不然我也不需要花这么多时间

   

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值