nlfdmyt 2008-08-22 13:32
浏览 129
已采纳

spring 连接数据库的问题

用的spring+hibernate,那位达人能帮忙解决下,感激不尽.
web.xml里:

....
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/applicationContext.xml
  </param-value>
 </context-param>
 <servlet>
    <servlet-name>context</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
....

applicationContext.xml里:
....
<bean id="dataSource" <br="">  class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" <br="">   value="com.mysql.jdbc.Driver">
  </property>
  <property name="url" <br="">   value="jdbc:mysql://localhost:3306/test">
  </property>
  <property name="username" value="root"></property>
  <property name="password" value="root"></property>
 </bean>
 <bean id="sessionFactory" <br="">  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource">
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLDialect
    </prop>
   </props>
  </property>
  <property name="mappingResources">
   <list>
    <value>com/test/vo/User.hbm.xml</value>
  </property>

</bean>

<bean id="transactionManager" <br="">   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property name="sessionFactory">
           <ref local="sessionFactory">
       </property>
  </bean>
  <bean id="userDAOProxy" <br="">   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     <property name="transactionManager">
         <ref bean="transactionManager">
     </property>
     <property name="target">
         <ref local="userDAO">
     </property>
     <property name="transactionAttributes">
         <props>
            <prop key="save*">PROPAGATION_REQUIRED </prop>
            <prop key="update*">PROPAGATION_REQUIRED </prop>
            <prop key="delete*">PROPAGATION_REQUIRED </prop>
            <prop key="find*">PROPAGATION_REQUIRED,readOnly </prop>
         </props>
     </property>
   </bean>

 <bean id="userDAO" class="com.test.dao.Impl.UserDAOImpl">
  <property name="sessionFactory">
   <ref bean="sessionFactory">
  </property>
 </bean>
....

 

DAO里:

...


public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
 private static final Log log = LogFactory.getLog(UserDAOImpl.class);
 private String hql = "from user u where u.name = ?";
 private boolean bo= false;
 
 protected void initDao() {
  // do nothing
 }

 public boolean save(User user) {
  try {
   this.getHibernateTemplate().save(user);//执行到这里出错,User对象里的name和passwd不是空的.
   this.getHibernateTemplate().flush();//getHibernateTemplate()调用的各种操作都出现这样的错误.
   bo = true;
  } catch (RuntimeException re) {
   throw re;
  }
  return bo;
 }

}

.......

出现的错误提示如下:

2008-8-22 13:18:34 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet regedit threw exception
java.lang.NullPointerException
 at com.test.dao.Impl.UserDAOImpl.save(UserDAOImpl.java:41)
 at com.test.service.Impl.RegeditImpl.save(RegeditImpl.java:27)
 at com.test.action.RegeditController.doPost(RegeditController.java:32)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:674)

 


问题补充:
我把spring 配置文件里的标签随便删几个,让不对应,或把dataSource改了,竟然还是提示这样的错误!!!

在web.xml里使用listener,启动tomcat时就出错.

郁闷了啊!
问题补充:
怎么测试spring hibernate 连接数据库了?
  • 写回答

5条回答 默认 最新

  • iteye_14762 2008-08-22 17:48
    关注

    [code="java"]
    at com.test.dao.Impl.UserDAOImpl.save(UserDAOImpl.java:41)
    [/code]
    从这句看来UserDAOImpl是null啊, 也就是userDAO没有注入, 看下调用userDAO.save()这个方法的那个类中的userDAO是否为NULL!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?