求助:quartz调用service报错

猥琐鼠逆袭大美猫 2013-03-11 10:39:20
直奔主题:
<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包?
这个问题怎么解决,真心求教,若能解决,不甚感激。
...全文
300 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还是结贴吧,这个问题最后用spring的getbean方法来得到那个service,实在想不出别的解决办法
  • 打赏
  • 举报
回复
引用 14 楼 fangmingshijie 的回复:
simpleService这个bean的配置文件在哪里
我看报错那个类是aop的,会不会和aop设置有关?
  • 打赏
  • 举报
回复
引用 14 楼 fangmingshijie 的回复:
simpleService这个bean的配置文件在哪里
就跟那个jobDetail写在一个文件里面
<bean id="simpleService" class="com.richway.quartz.service.SimpleService">
	 	
	 </bean>
  • 打赏
  • 举报
回复
simpleService这个bean的配置文件在哪里
  • 打赏
  • 举报
回复
引用 12 楼 fangmingshijie 的回复:
Java code?1234567891011改为public class SimpleService{ 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 楼 fangmingshijie 的回复:
SimpleService看下这个类。
这个类很简单,就是写了一个测试方法。

public class SimpleService implements Serializable{

	

	/**
	 * 
	 */
	private static final long serialVersionUID = -9050495977797372653L;

	public void testMethod(String name){
		System.out.println(new Date());
	}
}
  • 打赏
  • 举报
回复
SimpleService看下这个类。
  • 打赏
  • 举报
回复
引用 8 楼 fangmingshijie 的回复:
怎么可能报错,去掉后,clean下试试,人家没有实现Seriable,你却实现Seriable,当然报错了。
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 真的,不实现序列化就换成这个报错了
  • 打赏
  • 举报
回复
怎么可能报错,去掉后,clean下试试,人家没有实现Seriable,你却实现Seriable,当然报错了。
licip 2013-03-11
  • 打赏
  • 举报
回复
这个类:JobDataMap 是不是没有实现接口java.io.Seriable这个接口吧。
  • 打赏
  • 举报
回复
引用 4 楼 fangmingshijie 的回复:
simpleService这个类去掉序列化应该就行了。
去掉序列化的话,就会报service这个类没有序列化的错误
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
类实现了序列号,去掉就行了。
把什么去掉?
  • 打赏
  • 举报
回复
simpleService这个类去掉序列化应该就行了。
  • 打赏
  • 举报
回复
引用 2 楼 licip 的回复:
这个类:JobDataMap 是不是没有实现接口java.io.Seriable这个接口吧。
这个不是自己写的,就是quartz里面带的
licip 2013-03-11
  • 打赏
  • 举报
回复
这个类:JobDataMap 是不是没有实现接口java.io.Seriable这个接口吧。
  • 打赏
  • 举报
回复
类实现了序列号,去掉就行了。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧