I have a problem with this setup and I can't even view the logs.
This is my @Singleton
@Startup
EJB:
@Singleton
@Startup
@DependsOn("SchedulerEJB")
public class SchedulerStartUp {
private static Logger log = Logger.getLogger(SchedulerStartUp.class);
@EJB
SchedulerEJB schedEJB;
@PostConstruct
public void atStartup() {
log.info("startUp")
System.out.println("startUp");
schedEJB.cancelTimer("EBlastScheduler");
schedEJB.createTimer("*/1", "*", "*");
}
}
The SchedulerEJB
:
@Stateless
public class SchedulerEJB {
@Resource
TimerService timerService;
public cancelTimer(String timerInfo){/*...*/}
public createTimer(String sec, String min, String hour) {/*...*/}
@Timeout
public void execute(Timer timer) {/*...*/}
}
Maven pom:
//Been Using Glassfishv3.0.1 and EJB3.1 with a dependency of:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
You have invalid type of bean as an attribute of @DependsOn. DependsOn is for expressing dependency between two Singleton session beans, not between Singleton and Stateless. You should change SchedulerEJB to be Singleton or remove dependency.
If you decide change SchedulerEJB to Singleton, then @DepensOn is also not needed, because (from EJB 3.1 specification):
Note that if one Singleton merely needs to invoke another Singleton from its PostConstruct method, no explicit ordering metadata is required. In that case, the first Singleton would merely use an ejb reference to invoke the target Singleton. There, the acquisition of the ejb reference (either through injection or lookup) does not necessarily imply the actual creation of the corresponding Singleton bean instance.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With