final JobDataMap jobDataMap = execution.getJobDetail().getJobDataMap();
final Data data = Data.class.cast(jobDataMap.get(Data.class.getName()));
final Job job = data.job;
if (null == method) {
method = job.getClass().getMethod("execute", JobExecutionContext.class);
}
endpoint = (MessageEndpoint) job;
endpoint.beforeDelivery(method);
job.execute(execution);
} catch (final NoSuchMethodException e) {
throw new IllegalStateException(e);
} catch (final ResourceException e) {
ex = new JobExecutionException(e);