【问题标题】:How to share an Object Reference using Java Spring's Scheduled Task?如何使用 Java Spring 的计划任务共享对象引用?
【发布时间】:2014-11-04 15:57:13
【问题描述】:

我有一个用于存储 JDBC 连接的对象。简单来说,这个对象充当 JDBC 连接池管理器。我有几个石英作业和几个使用 Spring 的应用程序上下文配置的调度程序。我希望能够与每个作业共享此对象引用。该对象使用同步方法设置以确保线程安全。我还设置了每个作业以在执行后保留数据。

我知道 JobDataMap 只能用于基元和字符串,它似乎不是一个选项。我希望能够创建这个对象。然后我想将对象引用传递给每个作业。每个并发作业都将共享这个相同的引用。这可以防止每个作业具有唯一的对象引用。

我可以从哪里着手实现这个目标?它是完全在 Quartz/Spring 领域之外的东西吗?

谢谢

【问题讨论】:

    标签: java multithreading spring connection-pooling


    【解决方案1】:

    首先,我犯了一个巨大的错误。我将 Spring 的 Scheduled Task 与 Quartz 混淆了。其次,我能够使用带有 AutoWired 的 bean 来实现这一点。

    基本上,我在每个“工作”或任务中都有以下内容:

    @Autowired
    MyCustomDBConnPoolManager mgr;
    

    MyCustomDBConnPoolManager 的实际类代码

    @Service("databaseManager")
    public class MyCustomDBConnPoolManager{
    

    实例化我的上下文

    ApplicationContext appContext = 
    newFileSystemXmlApplicationContext("applicationContext.xml");
    
    MyCustomDBConnPoolManager manager = appContext.getBean("databaseManager");
    manager.initialize();
    

    【讨论】:

    • 所以标题应该变成“How to share an Object Reference using Java Spring's Scheduled Task?”而且石英标签可以去掉,对吧?如果可以,你能做到吗?如果不能,请告诉我,我会做的
    • 抱歉回复晚了,但我做到了。感谢您提出这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2011-12-08
    • 2021-04-02
    • 2011-07-19
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多