Java 如何确保EJB计时器在集群环境中一次在单个节点上运行?

Java 如何确保EJB计时器在集群环境中一次在单个节点上运行?,java,timer,ejb,Java,Timer,Ejb,我使用EJB3.0创建了4个不同的EJB计时器。每个计时器使用一个会话bean(我不能使用EJB3.1)。 我使用在weblogic-application.xml中配置的a类启动所有计时器,如下所示: <wls:listener> <wls:listener-class>com.xyz.abc.TimerJob</wls:listener-class> </wls:listener> <wls:weblogic-enter

我使用EJB3.0创建了4个不同的EJB计时器。每个计时器使用一个会话bean(我不能使用EJB3.1)。 我使用在weblogic-application.xml中配置的a类启动所有计时器,如下所示:

<wls:listener>
    <wls:listener-class>com.xyz.abc.TimerJob</wls:listener-class>
    </wls:listener>
<wls:weblogic-enterprise-bean>
        <wls:ejb-name>TimerServiceBean</wls:ejb-name>

        <wls:stateless-session-descriptor>
        <wls:pool>
        <wls:max-beans-in-free-pool>1</wls:max-beans-in-free-pool>
        </wls:pool>
</wls:stateless-session-descriptor>

com.xyz.abc.TimerJob
此类TimerJob访问无状态会话bean TimerServiceBean,该会话bean在服务器启动时在内部创建所有计时器作业。 我已将TimerServiceBean和所有Timer Session Bean配置为仅具有单个实例,如下所示:

<wls:listener>
    <wls:listener-class>com.xyz.abc.TimerJob</wls:listener-class>
    </wls:listener>
<wls:weblogic-enterprise-bean>
        <wls:ejb-name>TimerServiceBean</wls:ejb-name>

        <wls:stateless-session-descriptor>
        <wls:pool>
        <wls:max-beans-in-free-pool>1</wls:max-beans-in-free-pool>
        </wls:pool>
</wls:stateless-session-descriptor>

TimerServiceBean
1.
这在单服务器环境中运行良好。 我通过遵循artilce中提到的所有步骤在集群环境中部署所有这些:

在集群环境中,计时器在每个节点上执行 我希望每个计时器在创建计时器时配置的特定时间间隔后在单个节点上执行。 让它们一次在单个节点上工作的任何建议。提前感谢您的宝贵建议和回复