<bean id="deleteJobTarget"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>pl.smhost.manager.schedulers.impl.DeleteJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="tempDAO">
<ref bean="tempDAOImpl" />
</entry>
</map>
</property>
</bean>
<bean id="delteJob" class="org.springframework.transaction.interceptor.
TransactionProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>org.quartz.Job</value>
</list>
</property>
<property name="target">
<ref bean="deleteJobTarget"/>
</property>
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributeSource">
<ref bean="transactionAttributeSource"/>
</property>
</bean>
<bean id="deleteJobTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="deleteJob" />
</property>
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>
i niestety dostaje wyjatek:
ERROR org.springframework.web.context.ContextLoader - Context initialization
failed
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'deleteJobTrigger' defined in ServletContext resource [/WEB-INF/
smhost-schedulers.xml]: Error setting property values; nested exception is org.
springframework.beans.PropertyAccessExceptionsException:
PropertyAccessExceptionsException (1 errors); nested propertyAccessExceptions
are: [org.springframework.beans.TypeMismatchException: Failed to convert
property value of type [$Proxy1] to required type [org.quartz.JobDetail] for
property 'jobDetail']
PropertyAccessExceptionsException (1 errors)
org.springframework.beans.TypeMismatchException: Failed to convert property
value of type [$Proxy1] to required type [org.quartz.JobDetail] for property
'jobDetail'
at org.springframework.beans.BeanWrapperImpl.
doTypeConversionIfNecessary(BeanWrapperImpl.java:1103)
...
rozumiem przyczyne, bo zadanie ma atrybut: jobDataAsMap, ktory zawiera wszystkie
dao, a jak obuduje to transakcja, to tego nie mam, czy macie jakies pomysly jak
obudowac transakcja zadanie okresowe ?
z gory dzieki za jakiekolwiek sugestie
RoB
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
> <bean id="deleteJobTrigger"
> class="org.springframework.scheduling.quartz.CronTriggerBean">
> <property name="jobDetail">
^^^^^^^^^^^^^^
> <ref bean="deleteJob" />
> </property>
> <property name="cronExpression">
> <value>0 * * * * ?</value>
> </property>
> </bean>
>
Literówka?
--
Tomek Kańka
ps. nadal kombinuje jak by to zrobic :)
pozdrawiam
Nie znam się na Quartzu, ale chyba bez sensu jest ustawiać transakcyjne
proxy dla klasy JobDetailBean. Na mój gust, to powinieneś opakować
raczej pl.smhost.manager.schedulers.impl.DeleteJob w transakcję. Chyba
nie da się tego zrobić przy użyciu proxy bezpośrednio, ale możesz zrobić
dodatkowego managera opakowanego w transakcyjne proxy i jego wywoływać z
wnętrza pl.smhost.manager.schedulers.impl.DeleteJob.
--
Tomasz Woroniecki