前几天写了个bean使用到了依赖注入,初学阶段,google后也没找到原因import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.jms.ConnectionFactory;
import javax.jms.Topic;import cn.edu.hhu.ejb.entity.StRiverR;
import cn.edu.hhu.ejb.entity.StRnflR;
import cn.edu.hhu.ejb.facade.StRiverRFacadeRemote;@Stateless
@EJB(name="ejb/StRiverRFacade",
 beanInterface=StRiverRFacadeRemote.class,
 beanName="StRiverRFacade")
public class PrecipitationAlertTimerServiceBean implements 
PrecipitationAlertTimerService {
/*
@EJB(name="ejb/StRiverRFacade")
private StRiverRFacadeRemote riverChannelRegime;
*/
@Resource private TimerService timerService;
@Resource(mappedName="ConnectionFactory")
private ConnectionFactory factory;
@Resource(mappedName="PrecipitationAlertTopic")
private Topic topic;

private int count = 1;
private long oneSecond = 1000;
private String unitCode;
private String date;

public void initial(String unitCode, String date) {
this.unitCode = unitCode;
this.date = date;
}

public void scheduleAlert(boolean bool) {
Calendar time = Calendar.getInstance(); //当前日期
time.add(Calendar.MILLISECOND, 1000);
Date date = time.getTime();
if(bool) {
timerService.createTimer(date, oneSecond, null);

}

@Timeout
public void timeoutAlert(Timer timer) {
/*
List<StRiverR> units = riverChannelRegime.findByDate(unitCode, date);
Iterator it = units.iterator();
while(it.hasNext()){
StRiverR st = (StRiverR) it.next();
System.out.println(st.getQ());
}
*/
System.out.println("hahaha");
if (count>=5){
timer.cancel();//如果定时器触发5次,便终止定时器
}
count++;

}
打包到jboss4.2.2GA后报如下错误--- MBeans waiting for other MBeans ---
ObjectName: jboss.j2ee:jar=PrecipitationAlertTimerService.jar,name=PrecipitationAlertTimerServiceBean,service=EJB3
  State: FAILED
  Reason: java.lang.RuntimeException: Failed to populate ENC: env/ejb/StRiverRFacade global jndi name was null--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.j2ee:jar=PrecipitationAlertTimerService.jar,name=PrecipitationAlertTimerServiceBean,service=EJB3
  State: FAILED
  Reason: java.lang.RuntimeException: Failed to populate ENC: env/ejb/StRiverRFacade global jndi name was null