我在 EJB Stateless 上使用 JBoss AS 7 和 Schedule 方法。我的问题是即使 EJB 也是无状态的,它保持其状态,这给我带来了麻烦。这是示例:
计时器:
@Stateless
public class TestTimer {
@Inject HelloWorldService helloWorld;
@SuppressWarnings("unused")
@Schedule(second="*/10", minute="*", hour="*", info="MyTimer")
private void execute() {
System.out.println(helloWorld.sayHello());
System.out.println(this.toString() + " "+ helloWorld.toString());
}
}
注入的 HelloWorldService:
public class HelloWorldService {
public String sayHello() {
return "Hello World!";
}
}
我原以为System.out.println(this.toString() + " "+ helloWorld.toString());
每次计时器运行时该行都会打印一次不同的时间,因为TestTimer
每次都会是一个新实例,但我错了:
16:43:50,003 INFO [stdout] (EJB default - 3) foo.service.TestTimer@4a56936f foo.service.HelloWorldService@79e98289
16:44:40,022 INFO [stdout] (EJB default - 1) foo.service.TestTimer@4a56936f foo.service.HelloWorldService@79e98289
我做错了什么,这是预期的行为,还是什么?