2012-07-26 83 views
0

我试图建立CronTriggerFactoryBeanusing Spring,它有一个属性 名的JobDetail这我试图initalize。如何为org.quartz.JobDetail创建自定义编辑器?

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
     <property name="name" value="NTrigger"></property> 
     <property name="group" value="Group Trigger"></property> 
     <property name="jobDetail" value="Group Trigger"></property> 
     <property name="cronExpression" value="${quartz.slaPollerCronExpression.timeInterval}"></property> 
    </bean> 

但我正在逐渐误差

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'cronTriggerForSLAPoller' defined in ServletContext resource [/WEB-INF/config/quartz 
-config.xml]: Initialization of bean failed; nested exception is 
org.springframework.beans.ConversionNotSupportedException: Failed to convert property value 
of type 'java.lang.String' to required type 'org.quartz.JobDetail' for property 
'jobDetail'; nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [java.lang.String] to required type [org.quartz.JobDetail 
for property 'jobDetail': no matching editors or conversion strategy found. 

我认为这需要String作为默认类型。我想看一下[propertyeditors][1]。我想我需要使用ClassEditor 我是否认为正确?

我如何删除此错误? 如何为此创建自定义编辑器?

在此先感谢。

回答

1

可能是我missunderstood问题,但你需要传递的,而不是字符串

Failed to convert property value of type 'java.lang.String' to required type 'org.quartz.JobDetail' for property 'jobDetail' 

CronTriggerFactoryBean

/** 
* Set the JobDetail that this trigger should be associated with. 
*/ 
public void setJobDetail(JobDetail jobDetail) { 
    this.jobDetail = jobDetail; 
} 

看到http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.html

<bean id="exampleJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="targetObject" ref="exampleBusinessObject" /> 
    <property name="targetMethod" value="doIt" /> 
    <property name="concurrent" value="false" /> 
</bean> 


<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="exampleJob" /> 
    <!-- run every morning at 6 AM --> 
    <property name="cronExpression" value="0 0 6 * * ?" /> 
</bean> 
+0

根据错误描述 – 2012-07-26 13:40:44

+0

他们应该不会造成问题Thanks.I想我会的正确的方法。但我对** targetMethod **有疑问?这里我应该写些什么。我可以把它放空吗? – vikiiii 2012-07-27 05:05:24

+0

在MethodInvokingJobDetailFactoryBean的特定情况下,targetMethod是spring将在用户指定的bean上调用的对象的方法(exampleBusinessObject) – 2012-07-27 06:55:53

0

参考接缝你需要创建一个conversio n模式。

  1. 变化<property name="jobDetail" value="Group Trigger"></property><property name="jobDetail" ref="myconversion" />
  2. 添加一个转换模式:

    <bean id="myconversion" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="com.nuance.ndm.ou.jobs.MserverCalllogTransformerJob" /> 
    <property name="jobDataAsMap"> 
        <map> 
        <entry key="groupTrigger" value="Group Trigger"" />    
        </map> 
    </property> 
    

相关问题