Java 如何在部署描述符中只定义调度程序属性,而不是整个bean?

Java 如何在部署描述符中只定义调度程序属性,而不是整个bean?,java,jakarta-ee,ejb,Java,Jakarta Ee,Ejb,我有以下bean: @Stateless public class NewSessionBean { public void myJob() { System.out.println("RUN"); } } 我希望我的作业每10秒运行一次,所以我有一个部署描述符: <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee" version = "3.1" xmlns:xsi = "http://www

我有以下bean:

@Stateless
public class NewSessionBean {

    public void myJob() {
        System.out.println("RUN");
    }
}
我希望我的作业每10秒运行一次,所以我有一个部署描述符:

<ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
  version = "3.1"
  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
  <enterprise-beans>
    <session>
      <ejb-name>NewSessionBean</ejb-name>
      <ejb-class>org.test.NewSessionBean</ejb-class>
      <session-type>Stateless</session-type>
      <timer>
        <schedule>
          <second>*/10</second>
          <minute>*</minute>
          <hour>*</hour>
          <month>*</month>
          <year>*</year>
        </schedule>
        <timeout-method>
          <method-name>myJob</method-name>
       </timeout-method>
     </timer>
   </session>
 </enterprise-beans>
</ejb-jar>

新闻豆
org.test.NewSessionBean
无国籍
*/10
*
*
*
*
我的工作
它是有效的

但我只想声明部署描述符中的计时器,而不是整个bean,这样我就可以使用注释声明所有内容并对计划进行参数化

如果我删除ejb类或会话类型,我的应用程序将不会加载,因为DD缺少此信息

我是否可以仅覆盖计划程序的信息


编辑:我想将@schedule注释上的参数设置移到部署描述符上,这样我就可以在不需要重新编译/重新部署任何内容的情况下更改其值。

EJB规范没有真正设置好,无法将注释与XML描述符混合并匹配。人们通常使用其中一种。你能解释一下为什么不想使用注释吗?@dcsohl谢谢你的评论:)我是JavaEE世界的新手,我认为部署描述符的一个伟大特性是覆盖注释的能力,无需重新部署即可进行更改。我希望使用DD,以便能够更改调度程序的值(分钟、小时等),而无需重新编译代码。您的示例应该按照规范的要求运行,我知道它可以在WebSphere Application Server上运行。您使用的是什么应用服务器?是的,它可以工作。但是我想删除bean的定义,只在dd中定义调度器