直奔主题:
<bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
        <!--shouldRecover属性为true,则当Quartz服务被中止后,再次启动任务时会尝试恢复执行之前未完成的所有任务-->
        <property name="jobClass">
         <value>com.richway.quartz.test.HelloWorld</value>
        </property>
  <property name="jobDataAsMap">
  <map>
  <entry key="simpleService">
  <ref bean="simpleService"/>
  </entry>
  </map>
  </property>
        
    </bean>   
执行调度任务的那个类调用了一个service,就是那个simpleService,但是后台启动的时候就报错了:
Caused by: java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property 'simpleService' is not serializable: org.springframework.aop.aspectj.AspectJPointcutAdvisor
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.serializeJobData(StdJDBCDelegate.java:3355)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.updateJobDetail(StdJDBCDelegate.java:560)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1104)
... 39 more
说的貌似是spring包里面的类没有序列化,为什么要让spring里面的类实现序列化呢?莫不是要改jar包?
这个问题怎么解决,真心求教,若能解决,不甚感激。
quartzspring

解决方案 »

  1.   

    这个类:JobDataMap 是不是没有实现接口java.io.Seriable这个接口吧。
      

  2.   

    这个不是自己写的,就是quartz里面带的
      

  3.   

    simpleService这个类去掉序列化应该就行了。
      

  4.   

    去掉序列化的话,就会报service这个类没有序列化的错误
      

  5.   

    这个类:JobDataMap 是不是没有实现接口java.io.Seriable这个接口吧。
      

  6.   

    怎么可能报错,去掉后,clean下试试,人家没有实现Seriable,你却实现Seriable,当然报错了。
      

  7.   

    Caused by: java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property 'simpleService' is not serializable: com.richway.quartz.service.SimpleService$$EnhancerByCGLIB$$142de007
    at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.serializeJobData(StdJDBCDelegate.java:3355)
    at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.updateJobDetail(StdJDBCDelegate.java:560)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1104)
    ... 39 more
    真的,不实现序列化就换成这个报错了
      

  8.   

    这个类很简单,就是写了一个测试方法。public class SimpleService implements Serializable{ /**
     * 
     */
    private static final long serialVersionUID = -9050495977797372653L; public void testMethod(String name){
    System.out.println(new Date());
    }
    }
      

  9.   


    改为
    public class SimpleService{ 
        public void testMethod(String name){
            System.out.println(new Date());
        }
    }
    还报错?
      

  10.   

    simpleService这个bean的配置文件在哪里
      

  11.   

    就跟那个jobDetail写在一个文件里面
    <bean id="simpleService" class="com.richway.quartz.service.SimpleService">
     
     </bean>
      

  12.   

    我看报错那个类是aop的,会不会和aop设置有关?
      

  13.   

    还是结贴吧,这个问题最后用spring的getbean方法来得到那个service,实在想不出别的解决办法