是否可以在应用程序代码之外配置 EJB 3.1 @Schedule?
如何配置计划间隔:
@Schedule(persistent=true, minute="*", second="*/5", hour="*")
在应用程序代码之外?
- 如何在ejb-jar中配置它.xml?
- 是否可以在应用程序(属性文件类型)之外对其进行配置?
如何配置计划间隔:
@Schedule(persistent=true, minute="*", second="*/5", hour="*")
在应用程序代码之外?
下面是部署描述符中的调度示例:
<session>
<ejb-name>MessageService</ejb-name>
<local-bean/>
<ejb-class>ejb.MessageService</ejb-class>
<session-type>Stateless</session-type>
<timer>
<schedule>
<second>0/18</second>
<minute>*</minute>
<hour>*</hour>
</schedule>
<timeout-method>
<method-name>showMessage</method-name>
</timeout-method>
</timer>
</session>
配置计时器的另一种方法是使用编程计划。
@Singleton
@Startup
public class TimedBean{
@Resource
private TimerService service;
@PostConstruct
public void init(){
ScheduleExpression exp=new ScheduleExpression();
exp.hour("*")
.minute("*")
.second("*/10");
service.createCalendarTimer(exp);
}
@Timeout
public void timeOut(){
System.out.println(new Date());
System.out.println("time out");
}
}
根据 EJB 3.1 规范,可以通过注释或部署描述符来配置自动计时器。ejb-jar.xml
18.2.2 自动创建计时器
定时服务支持基于 Bean 类或部署描述符中的元数据自动创建定时器。这允许 Bean 开发人员调度计时器,而无需依赖 Bean 调用以编程方式调用其中一个 Timer Service 计时器创建方法。自动创建的计时器由容器作为应用程序部署的结果创建。
我对部署描述符 XLM 架构的理解是,您可以使用元素中的元素来定义它。<timer>
<session>
<xsd:element name="timer"
type="javaee:timerType"
minOccurs="0"
maxOccurs="unbounded"/>
有关详细信息(特别是 和 元素),请参阅复杂类型的定义。timerType
schedule
timeout-method