JBoss任务调度:将参数传递给方法

时间:2010-07-14 18:41:29

标签: java jboss scheduling jboss5.x

我正试图让JBoss中的调度程序工作为5。

到目前为止,我已经创建了自己的MBean(它可以工作),我创建了这样的调度程序:

<mbean code="org.jboss.varia.scheduler.Scheduler"
          name=":service=Scheduler,name=SchedulableMBeanExample">
  <depends>user:service=Print</depends>
  <attribute name="StartAtStartup">true</attribute>
  <attribute name="SchedulableMBean">user:service=Print</attribute>
  <attribute name="SchedulableMBeanMethod">print(java.lang.String)</attribute>
  <attribute name="InitialStartDate">NOW</attribute>
  <attribute name="SchedulePeriod">10000</attribute>
  <attribute name="InitialRepetitions">10</attribute>
  <attribute name="FixedRate">true</attribute></mbean>

它有效,但主要问题是如何指定我想作为参数传递给我的方法的字符串?

我已经搜索了但是我发现的唯一更接近的是这个属性:“SchedulableArguments”但这只适用于构造函数。

感谢您的帮助。

劳伦。

2 个答案:

答案 0 :(得分:0)

在JBoss中安装MBean后,您可以通过JBoss jmx-console配置MBean参数,以配置JBoss。

请参阅JBoss wiki的这篇文章:ExampleHelloWorldService

答案 1 :(得分:0)

你已经到了一半;你有正确的属性 - SchedulableMBeanMethod - 它允许参数列表,但只包含特定参数。根据{{​​3}},您的参数选项为:

  • 通知将被定时器通知实例(javax.management.Notification)取代

  • DATE将被通知调用的日期替换(java.util.Date)

  • 将被剩余重复次数(长)替换的重复

  • SCHEDULER_NAME将被调度程序的ObjectName替换

  • Scheduler将设置为null的任何完全限定的类名。

    如果您需要传递任何其他内容,我认为您最好的选择是为您的mbean添加一个方法来计算&amp;将参数传递给您的工作职能。

猜测您要打印当前日期,可以设置:

  <attribute name="SchedulableMBeanMethod">scheduledPrint(DATE)</attribute>

定义scheduledPrint以格式化日期字符串并调用print方法。