0 0

使用Websphere连接池,spring中使用jndi获取dataSource,使用JdbcTemplate报错10

问题描述:
       使用websphere 配置数据库连接池,在spring 中使用jndi的方式获取连接,程序中使用jdbcTemplate操作数据,添加或删除一条数据时,第一次添加成功,第二次添加报错,连续再添加依然报错,过几分钟,操作删除,有可能成功,有可能不成功。并且可以保证程序无问题,开发时是采用tomcat做服务器的,Spring中连接配置是采用直连的,就无任何问题。
代码:
     applicationContext.xml
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="default" autowire="default" dependency-check="default" >
          <property name="jndiName">
                 <value>java:comp/env/jdbc/hxcc</value>
          </property>
    </bean>

   <bean id="custInfoDAO" class="com.cupdata.cif.dao.CustInfoDAOImpl">
        <property name="dataSource">
             <ref bean="dataSource" />
        </property>
        <property name="searchHelper">
             <ref bean="searchHelper" />
        </property>
  </bean>
 

  CustInfoDAOImpl.java

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);


  jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){

      public int getBatchSize() {
            return listCustInfo.size(); 
      }

     public void setValues(PreparedStatement ps, int i) throws SQLException {
          ps.setString(1, listCustInfo.get(i).getKeytype());
          ps.setString(2, listCustInfo.get(i).getCustid());
          ps.setString(3, listCustInfo.get(i).getCusttype());
     }

 });

 

 

错误描述:

 

java.lang.NullPointerException
 at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
 at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
  at oracle.jdbc.driver.OraclePreparedStatement.clearParameters(OraclePreparedStatement.java:3401)
 at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.resetStatement(WSJdbcConnection.java:2417)
 at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2065)
  at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2017)
 at org.springframework.jdbc.core.JdbcTemplate$SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1114)
 at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:470)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:505)
 at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:769)
 at com.cupdata.cif.dao.CustInfoDAOImpl.addCustMainInfo(CustInfoDAOImpl.java:84)
at com.cupdata.cif.manager.CustInfoManagerImpl.addCustMainInfo(CustInfoManagerImpl.java:41)
 at com.cupdata.cif.manager.CustInfoManagerImpl$$FastClassByCGLIB$$a0ccfc8a.invoke(<generated>)
 at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:698)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
at com.cupdata.cif.manager.CustInfoManagerImpl$$EnhancerByCGLIB$$172567a9_2.addCustMainInfo(<generated>)
at com.cupdata.cif.action.CustInfoAction.addCustMainInfo(CustInfoAction.java:62)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:618)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:282)
 at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:459)
 at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:265)
at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:262)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1075)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1016)
 at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
at net.ed.cc.common.struts.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:138)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
 at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:771)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:546)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
 at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
 at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:115)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
 at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
 at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)

 

表面上看是空指针错误,但程序中根本就没有空指针

   at com.cupdata.cif.dao.CustInfoDAOImpl.addCustMainInfo(CustInfoDAOImpl.java:84)
84行就是 jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){ ....

 

datasource不为空,jdbcTemplate也不为空


问题补充:配置了,程序上是可以跑的通的,没有问题<div class="quote_title">liukai 写道</div><div class="quote_div">datasource <br />jdbcTemplate都没看到配置。 <br />你配置了上面2个吗?</div> <br />
2010年12月08日 11:12

1个答案 按时间排序 按投票排序

0 0

datasource
jdbcTemplate都没看到配置。
你配置了上面2个吗?

2010年12月08日 16:01

相关推荐

Global site tag (gtag.js) - Google Analytics