芯友网xin1234.com

问下,使用定时器后,事务没提交成功怎么回事啊,手动提交就报错有谁遇过使用定时器时事务失效吗



杭州-真
问下,使用定时器后,事务没提交成功怎么回事啊,手动提交就报错
有谁遇过使用定时器时事务失效吗
深圳-DKKK
你是不是时间是不是很长?
你执行时间多长
杭州-真
不长
5秒
深圳-DKKK
每次都这样?
杭州-真
我用了两种定时器,事务在定时器里面跑就失效

spring里有自动事务
到了定时器里面就失效了
深圳-DKKK
这个是声明事物
杭州-真
不用定时器又没问题
深圳-DKKK
你名字取对了没
杭州-真
对的
做一个插入
放到定时器里面是失效
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="
http://www.springframework.org/schema/mvc"
       xmlns:cache="
http://www.springframework.org/schema/cache"
       xmlns:context="
http://www.springframework.org/schema/context"
       xmlns:task="
http://www.springframework.org/schema/task"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans
                        
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                        
http://www.springframework.org/schema/mvc
                         
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
                          
http://www.springframework.org/schema/cache
                        
http://www.springframework.org/schema/cache/spring-cache-3.2.xsd
                        
http://www.springframework.org/schema/context
                        
http://www.springframework.org/schema/context/spring-context-3.1.xsd
                         
http://www.springframework.org/schema/task
                         
http://www.springframework.org/schema/task/spring-task-3.0.xsd
                         
http://www.springframework.org/schema/mvc
                         
http://www.springframework.org/schema/mvc/spring-mvc.xsd "> 
  
    <context:component-scan base-package="util"&get;</context:component-scan&get;
     <!-- 方式二:使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法--&get;    
    <!-- 定义目标bean和bean中的方法 --&get;  
    <bean id="myWorker" class="util.MyWorker"/&get;  
    <bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&get;  
    <property name="targetObject"&get;  
        <ref bean="myWorker"/&get;  
    </property&get;  
    <property name="targetMethod"&get;  <!-- 要执行的方法名称 --&get;  
        <value&get;running</value&get;  
    </property&get;  
</bean&get;  
   
   
   <!-- ======================== 调度触发器 ======================== --&get;  
<bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"&get;  
    <property name="jobDetail" ref="SpringQtzJobMethod"&get;</property&get;  
    <property name="cronExpression" value="0/5 * * * * ?"&get;</property&get;  
</bean&get;  
   <!-- ======================== 调度工厂 ======================== --&get;  
<bean lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&get;  
    <property name="triggers"&get;  
        <list&get;  
            <ref bean="CronTriggerBean"/&get;  
        </list&get;  
    </property&get;  
</bean&get;   
 
</beans&get;  

配置文件
深圳-DKKK
给我看下你方法名
杭州-真

  <!-- 方式二:使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法-->    
    <!-- 定义目标bean和bean中的方法 ,util.MyWorker是业务类位置,【要改】--&get;  
    <bean id="myWorker" class="util.MyWorker"/&get;  
    <bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&get;  
    <property name="targetObject"&get; 
    <!-- 【myWorker"是上面的id】 --&get; 
        <ref bean="myWorker"/&get;  
    </property&get;  
    <property name="targetMethod"&get;  <!-- 【running是执行的方法名称】 --&get;  
        <value&get;add</value&get;  
    </property&get;  
</bean&get;  
深圳-DKKK
这就奇怪了
杭州-真

执行成功,就是事务失败
事务手动提交的话,第一次可以成功,后面就报错
加上tx.commit();手动提交
第二次出错
深圳-DKKK
用了声明事物 应该不能用手动了吧
杭州-真

不用定时器就没问题
用了tomcat定时器和Quartz定时器,两个事务都失效了
深圳-DKKK
我们也是 quartz
也是springMVC
好像没发生你这种问题啊
杭州-真
不知道是不是包问题
我昨天晚上刚接触Quartz定时器
刚配置一堆错
深圳-DKKK
你的quartz 有没有 给spring管理
杭州-真
有可能
我网上找的代码
我试试
深圳-DKKK
你要给 spring去管理
你现在是用spring的声明事物
杭州-真
你那有代码吗
怎么给spring管理?
深圳-DKKK
==
<import resource="classpath:spring/applicationContext-quartz.xml" />
杭州-真
这个引用了
深圳-DKKK
数据源呢
杭州-真
深圳-DKKK
<!-- 线程池配置 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"&get;
<property name="corePoolSize" value="10" /&get;
<property name="maxPoolSize" value="10" /&get;
<property name="queueCapacity" value="10" /&get;
<property name="keepAliveSeconds" value="2000" /&get;
<property name="rejectedExecutionHandler"&get;
<bean class="java.util.concurrent.ThreadPoolExecutor$AbortPolicy" /&get;
</property&get;
</bean&get;
杭州-真
都没问题
深圳-DKKK
这个配了没 
杭州-真
没有
深圳-DKKK
肯定就是spring没管理到 你自己看下
杭州-真
放在Quartz配置文件里面吗
在网上找的代码,基本都差不多的
passion
各位亲,一般第三方接口跟webservice的区别是什么啊
还是说,第三方接口本身就是一个webservice?
深圳-DKKK
@passion 第三方接口是个俗称啊。。webservice 或者 httpAPI 是实现技术
任何可以供内部调用或者外部调用的都可以作为 接口
杭州-真
成功了
深圳-DKKK
第三方 就是别人系统提供的接口
杭州-真
Transaction tx=session.getTransaction();
   session.beginTransaction();
   tx.commit();
   tx.rollback();

加上这个
深圳-DKKK
感觉你这种还需要人工提交的。。
杭州-真
唉,弄了一天
没办法,不知道哪的问题,百度没这方面答案
浙江-男-帅的惊动党中央
quartz 跟事物本身没什么联系的
job 调用service,spring 管理service的事物
幻灭重生
哪位大神能讲下页面签名是什么东东不

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容