Issue 1:
Steve Storey opened SPR-8889 and commented

Having put RC2 to work and testing out the fix for #13418 I now realise there's another problem. When the job I configured fires, I get the following exception2011-11-30 23:30:00,073 ERROR [JobRunShell] Job DEFAULT.job.reload.profiles threw an unhandled Exception:

java.lang.IncompatibleClassChangeError: Found interface org.quartz.JobExecutionContext, but class was expected

at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:79)

at org.quartz.core.JobRunShell.run(JobRunShell.java:213)

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

2011-11-30 23:30:00,075 ERROR [ErrorLogger] Job (DEFAULT.job.reload.profiles threw an exception.

org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.IncompatibleClassChangeError: Found interface org.quartz.JobExecutionContext, but class was expected]

at org.quartz.core.JobRunShell.run(JobRunShell.java:224)

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

Caused by: java.lang.IncompatibleClassChangeError: Found interface org.quartz.JobExecutionContext, but class was expected

at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:79)

at org.quartz.core.JobRunShell.run(JobRunShell.java:213)

... 1 more

Configuration for the job is:<bean id="profileService.schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list>

<bean class="org.quartz.impl.triggers.CronTriggerImpl">

<property name="name" value="job.reload.profiles.trigger" />

<property name="jobName" value="job.reload.profiles"/>

<property name="jobGroup" value="DEFAULT" />

<!-- run every 10 mins -->

<property name="cronExpression" value="0 0,10,20,30,40,50 * * * ?" />

</bean>

</list>

</property>

<property name="jobDetails">

<list>

<bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="profileService"/>

<property name="targetMethod" value="reloadProfiles"/>

<property name="concurrent" value="false"/>

<property name="name" value="job.reload.profiles"/>

<property name="group" value="DEFAULT" />

</bean>

</list>

</property>

</bean>

I assume that this is a build issue for the Spring framework? Will there need to be a separate package and so on for Quartz 2, like Hibernate4

Affects: 3.1 RC2

Attachments:

MethodInvokingJobDetailFactoryBean.java (11.56 kB)

Issue Links:

#13528 QuartzJobBean throws IncompatibleClassChangeError when using Quartz 2.x ("is duplicated by")

Referenced from: commits 4831ca2, 9506f8d, 2b12281, 00ff8fa

1 votes, 4 watchers

Issue 2:
Tom DeWire opened SPR-3472 and commented

Repeated from my original forum post: (http://forum.springframework.org/showthread.php?t=38619)

We have two pieces of advice that we would like to execute "around" a service method. The service method takes a single parameter.

The first piece of advice (AdviceA in this example) wants to capture all of the methods in the class. It does not care about the parameters passed into those methods.

The second piece of advice (AdviceB in this example) wants to capture a specific method. It does care about the parameter. It wants to record this transaction into the logs if certain criteria are met.

This was all working fine in spring 2.0.2. We recently attempted to upgrade to 2.0.5, and we ran into some failures. We backed off the versions and determined the root cause appears to be a change introduced with 2.0.3.

Specifically, we're receive this error immediately after calling proceed() from the first piece of advice:

Exception in thread "main" java.lang.IllegalStateException: Required to bind 2 arguments, but only bound 1 (JoinPointMatch was NOT bound in invocation)

It seems worth noting that either of these pieces of advice will execute just fine if they are allowed to execute alone. It is only when both pieces of advice are applied that we run into this issue.

I've managed to replicate this behavior in a very small test. I'll attempt to attach that to this bug (if i'm allowed to do that sort of thing).

Affects: 2.0.3, 2.0.4, 2.0.5

Attachments:

aop-test.zip (12.96 kB)

aop-test-dependencies-corrected.zip (13.13 kB)

Issue Links:

#8202 around advice does not bind parameters if another advise is active on same join point ("is duplicated by")