大侠们 ,小弟有一个问题困扰着,跪求大侠帮助
背景:这是一个普通的application,有10条生产者线程根据一定的业务逻辑获取到数据,封装为一个Product对象,插入到队列中。一个消费者线程从队列中取出这个Product对象,用jdbcTemplet保存到数据库中。实验用单线程时候是可以保存到数据库中去的,但是用多线程,程序没有爆出异常,却没有数据到数据库中去。用spring的jdbcTemplate,insert数据到数据库里面去
用的是spring提供的事务管理
<bean id="dataSourceTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
日志打印了事务已经提交了!
到时查数据库又没有数据进去,求大侠解答
00:21:56,750  INFO Thread-19 manager.RoughProductConsumerManagerImpl:23 - 开始保存数据库。。
00:21:56,750 DEBUG Thread-19 support.DefaultListableBeanFactory:241 - Returning cached instance of singleton bean 'dataSourceTransactionManager'
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:365 - Creating new transaction with name [com.spider.business.manager.ProductManager.addProduct]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:205 - Acquired Connection [jdbc:mysql://localhost:3306/s?useUnicode=true&characterEncoding=UTF-8, UserName=root@localhost, MySQL-AB JDBC Driver] for JDBC transaction
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:222 - Switching JDBC Connection [jdbc:mysql://localhost:3306/s?useUnicode=true&characterEncoding=UTF-8, UserName=root@localhost, MySQL-AB JDBC Driver] to manual commit
00:21:56,750 DEBUG Thread-19 support.TransactionSynchronizationManager:183 - Bound value [org.springframework.jdbc.datasource.ConnectionHolder@2ba88c] for key [org.apache.commons.dbcp.BasicDataSource@694f12] to thread [Thread-19]
00:21:56,750 DEBUG Thread-19 support.TransactionSynchronizationManager:258 - Initializing transaction synchronization
00:21:56,750 DEBUG Thread-19 interceptor.TransactionInterceptor:381 - Getting transaction for [com.spider.business.manager.ProductManager.addProduct]
00:21:56,750 DEBUG Thread-19 interceptor.TransactionInterceptor:410 - Completing transaction for [com.spider.business.manager.ProductManager.addProduct]
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:925 - Triggering beforeCommit synchronization
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:938 - Triggering beforeCompletion synchronization
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:752 - Initiating transaction commit
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:265 - Committing JDBC transaction on Connection [jdbc:mysql://localhost:3306/s?useUnicode=true&characterEncoding=UTF-8, UserName=root@localhost, MySQL-AB JDBC Driver]
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:951 - Triggering afterCommit synchronization
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:967 - Triggering afterCompletion synchronization
00:21:56,750 DEBUG Thread-19 support.TransactionSynchronizationManager:311 - Clearing transaction synchronization
00:21:56,750 DEBUG Thread-19 support.TransactionSynchronizationManager:229 - Removed value [org.springframework.jdbc.datasource.ConnectionHolder@2ba88c] for key [org.apache.commons.dbcp.BasicDataSource@694f12] from thread [Thread-19]
00:21:56,750 DEBUG Thread-19 datasource.DataSourceTransactionManager:323 - Releasing JDBC Connection [jdbc:mysql://localhost:3306/s?useUnicode=true&characterEncoding=UTF-8, UserName=root@localhost, MySQL-AB JDBC Driver] after transaction
00:21:56,750 DEBUG Thread-19 datasource.DataSourceUtils:312 - Returning JDBC Connection to DataSource
00:21:56,750  INFO Thread-19 manager.RoughProductConsumerManagerImpl:25 - 保存数据库完成。。

解决方案 »

  1.   

    自己顶一下,日志打印跟单线程的情况少了一些有东西。
    01:06:23,687 DEBUG main interceptor.TransactionInterceptor:381 - Getting transaction for [com.spider.business.manager.ProductManager.addProduct]
    01:06:23,687 DEBUG main core.JdbcTemplate:810 - Executing prepared SQL update
    01:06:23,687 DEBUG main core.JdbcTemplate:569 - Executing prepared SQL statement [insert into t_s_product(id,pageTitle,name,price,ptype,imageSrc,pageUrl,createdTime,version,pageContent)values(?,?,?,?,?,?,?,?,?,?)]
    01:06:23,687 DEBUG main support.TransactionSynchronizationManager:139 - Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@dfbb43] for key [org.apache.commons.dbcp.BasicDataSource@670479] bound to thread [main]
    01:06:23,687 DEBUG main support.TransactionSynchronizationManager:139 - Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@dfbb43] for key [org.apache.commons.dbcp.BasicDataSource@670479] bound to thread [main]
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 1, parameter value [97DB106803266FE88C8A0A4D348FF2C3], value class [java.lang.String], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 2, parameter value [null], value class [null], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 3, parameter value [NWT Sexy Womens White &amp; Pink Satin Bow Lingerie Babydoll Set], value class [java.lang.String], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 4, parameter value [4.99], value class [java.lang.Double], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 5, parameter value [Womens-Clothing], value class [java.lang.String], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 6, parameter value [http://thumbs2.ebaystatic.com/d/l225/m/miEp53IBaVLDMRq3feh3mhg.jpg], value class [java.lang.String], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 7, parameter value [http://www.ebay.com/itm/NWT-Sexy-Womens-White-Pink-Satin-Bow-Lingerie-Babydoll-Set-/251157430437?pt=US_CSA_WC_Sleepwear_Robes&hash=item3a7a2640a5], value class [java.lang.String], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 8, parameter value [Wed Sep 26 01:06:23 CST 2012], value class [java.util.Date], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 9, parameter value [1], value class [java.lang.Integer], SQL type unknown
    01:06:23,687 DEBUG main core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 10, parameter value [null], value class [null], SQL type unknown
    01:06:23,687 DEBUG main core.JdbcTemplate:819 - SQL update affected 1 rows
    01:06:23,687 DEBUG main support.TransactionSynchronizationManager:139 - Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@dfbb43] for key [org.apache.commons.dbcp.BasicDataSource@670479] bound to thread [main]
    01:06:23,687  INFO main cache.ProductIdCache:46 - the productId :[97DB106803266FE88C8A0A4D348FF2C3] add to cache..
    01:06:23,687 DEBUG main interceptor.TransactionInterceptor:410 - Completing transaction for [com.spider.business.manager.ProductManager.addProduct]
    01:06:23,687 DEBUG main datasource.DataSourceTransactionManager:925 - Triggering beforeCommit synchronization