我正在尝试使用dropwizer-日记本来安排工作。在我的预定工作中,我需要访问我的DAO。每当我计划的作业运行时,我都会收到以下错误...
org.hibernate.HibernateException: No session currently bound to execution context
我试图使用这个链接中描述的方法,https://github.com/timmolter/XDropWizard在注入全局对象或配置参数到作业一节中
这是我的申请代码:
public class ServiceApplication extends Application<OnboardingServiceConfiguration> {
public static final Logger logger = LoggerFactory.getLogger(OnboardingServiceApplication.class);
public static void main(String[] args) throws Exception {
new OnboardingServiceApplication().run(args);
}
private final HibernateBundle<OnboardingServiceConfiguration> hibernate = new HibernateBundle<OnboardingServiceConfiguration>(com.rm.models.Application.class, EmailQueue.class) {
@Override
public DataSourceFactory getDataSourceFactory(OnboardingServiceConfiguration configuration) {
return configuration.getDataSourceFactory();
}
};
@Override
public String getName() {
return "onboarding";
}
@Override
public void initialize(Bootstrap<OnboardingServiceConfiguration> bootstrap) {
// add scheduled jobs
bootstrap.addBundle(new SundialBundle<OnboardingServiceConfiguration>(){
@Override
public SundialConfiguration getSundialConfiguration(OnboardingServiceConfiguration configuration) {
return configuration.getSundialConfiguration();
}
});
// to the database
bootstrap.addBundle(hibernate);
}
@Override
public void run(OnboardingServiceConfiguration configuration, Environment environment) throws Exception {
// add health checks
final HealthCheckResource resource = new HealthCheckResource(
environment.healthChecks()
);
environment.jersey().register(resource);
// configure DAOs for database management
final ApplicationDAO applicationDAO = new ApplicationDAO(hibernate.getSessionFactory());
final EmailDAO emailDAO = new EmailDAO(hibernate.getSessionFactory());
logger.info("Package set for scheduled jobs: " + configuration.getSundialConfiguration().getAnnotatedJobsPackageName());
environment.getApplicationContext().setAttribute("EmailDAO", emailDAO);
environment.getApplicationContext().setAttribute("ApplicationDAO", applicationDAO);
// add resources for REST API endpoints
environment.jersey().register(new ApplicationResource());
// setup environment to run scheduled jobs
// more info and tutorial found at https://github.com/timmolter/dropwizard-sundial
environment.admin().addTask(new LockSundialSchedulerTask());
environment.admin().addTask(new UnlockSundialSchedulerTask());
environment.admin().addTask(new RemoveJobTriggerTask());
environment.admin().addTask(new AddCronJobTriggerTask());
environment.admin().addTask(new StartJobTask());
environment.admin().addTask(new StopJobTask());
environment.admin().addTask(new RemoveJobTask());
environment.admin().addTask(new AddJobTask());
}
}
这是我预定的工作:
@Override
public void doRun() throws JobInterruptException {
this.logger = LoggerFactory.getLogger(EmailJobs.class);
logger.info("Running Scheduled Tasks:");
this.emailerService = new EmailerService((EmailDAO) SundialJobScheduler.getServletContext().getAttribute("EmailDAO"));
this.applicationDAO = (ApplicationDAO) SundialJobScheduler.getServletContext().getAttribute("ApplicationDAO");
List<Application> applications = applicationDAO.getAllForManagerIncompleteReminder();
}
我正在获取DAO,它们不是空的,但它们不绑定到任何会话。我该怎么解决这个问题??
(PS,当我通过资源访问Hibernate会话时,它工作正常,只是不是计划的任务)
在ServiceApplication中,按如下方式实例化您的电子邮件服务,并将其添加到servletContext中。
// configure DAOs for database management
final ApplicationDAO applicationDAO = new ApplicationDAO(hibernate.getSessionFactory());
final EmailDAO emailDAO = new EmailDAO(hibernate.getSessionFactory());
Class[] constructorParams = {EmailDAO.class};
Object[] objectsParam = {emailDAO};
EmailerService emailerService = new UnitOfWorkAwareProxyFactory(hibernate)
.create(EmailerService.class, constructorParams, objectsParam);
environment.getApplicationContext().setAttribute("EMAIL_SERVICE", emailerService);
我对Hazelcast很陌生,很可能我错过了一些显而易见的东西,但这里要说。我有一个运行分布式的Java应用程序,每个应用程序都包含自己的Hazelcast实例。我需要Hazelcast调度一个作业,它将以固定的速率运行,但绝不会同时在几个实例上运行。为此,我计划使用IScheduledExecutorService并创建一个实现Runnable和NamedTask的作业。我的问题是作业需要在应用
问题内容: 我有一个必须执行重复任务的Web应用程序,发送消息和警报,我已经使用脚本页面在浏览器中加载它们时执行了这些任务,即http://example.com/tasks.php,我已经在我的Web应用程序的每个页面中都使用iframe表示。 现在,我想将其更改为使用CRON作业,因为第一种方法可能会导致卡纸性能,因此,我如何制作访问http://example.com/tasks.php的C
Spring使用Quartz的顺序作业计划 我有三个或更多的工作,这取决于他们各自以前的工作,他们将按顺序运行。如果完成运行,当完成运行。如果在上一个中发生任何错误,则不会激发下一个触发的作业。我试图了解工作链使用石英,但无法通过它。 作业顺序如下所示 提前谢了。
我想建立一个单一的Spring Boot应用程序,同时做多种不同的任务。我在互联网上做了研究,但我找不到任何出路。我来详细说说。我希望每隔一段时间启动一次作业,例如一天一次。我可以用Spring石英来做。我也想在一个专用的互联网地址上听信息。消息将来自Apache Kafka平台。因此,我想将Kafka集成用于Spring框架。它实际上是否适用(始终监听消息并按时执行计划的作业)
我想对詹金斯的工作进行声纳分析。我在用蚂蚁,所以我在用声纳跑步者和声纳。项目中的属性。我正在将二进制文件配置为 sonar.binaries=构建/蚂蚁/类 成功构建后,声纳开始运行一段时间。但是我在字节码分析中得到很多警告。 我收到警告XX-无法通过类加载器访问类“XX”。 每堂课... 我真的不知道为什么都有课?
我需要两个 cron 工作,我真的不确定我做得是否正确。一个骗局作业应该在每 01.01.xxx 01:00 运行一次,另一个应该在每晚 01:00 运行。 这是正确的表达吗?