Java @Singleton、@Startup、@PostConstruct不';t在EJB3.1和Glassfishv3.0.1上工作

Java @Singleton、@Startup、@PostConstruct不';t在EJB3.1和Glassfishv3.0.1上工作,java,jakarta-ee,timer,glassfish,ejb,Java,Jakarta Ee,Timer,Glassfish,Ejb,我的设置有问题,甚至无法查看日志 这是我的@Singleton@StartupEJB: @Singleton @Startup @DependsOn("SchedulerEJB") public class SchedulerStartUp { private static Logger log = Logger.getLogger(SchedulerStartUp.class); @EJB SchedulerEJB schedEJB; @PostCon

我的设置有问题,甚至无法查看日志

这是我的
@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", "*", "*");
    }
}
时间表ejb

 @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>
//一直在使用Glassfishv3.0.1和EJB3.1,依赖项为:
爪哇
JavaEEAPI
6
假如

的属性中包含无效的bean类型。DependsOn用于表示两个单例会话bean之间的依赖关系,而不是单例和无状态会话bean之间的依赖关系。您应该将ScheduleEJB更改为Singleton或删除依赖项

如果您决定将ScheduleEJB更改为Singleton,则也不需要@DepensOn,因为(来自EJB3.1规范):

注意,如果一个单例只需要调用另一个单例 从它的PostConstruct方法来看,不需要显式排序元数据 必修的。在这种情况下,第一个单例将只使用ejb 调用目标单例的引用。在那里,收购 ejb引用(通过注入或查找)不存在 必然意味着相应单例的实际创建 bean实例


你能调试它吗?此外,我在使用commons日志记录时遇到问题,我最终使用了slf4j
LoggerFactory.getLogger(SchedulerStartUp.class)
logging在部署应用程序时运行良好,它似乎只在这种情况下使用:(遗憾的是,没有时间这么做:(,现在正在考虑许多事情…帮助:((请将“@EJB”受让人更改为接口(带有“@Remote”/“@Local”)而不是EJB本身。另外,如果依赖项不使用@Singleton,请删除“@DependsOn”,谢谢。但我需要它是@Stateless,有什么解决方法吗?也许我应该完全删除“@DependsOn”?但是我的“@EJB”会工作吗?:(“@EJB”不起作用,有没有办法初始化上面名为“ScheduleEJB”的bean?我还没有从singleton调用无状态bean的情况,但我假设删除@DependsOn应该起作用,假设在代码的其他部分中没有任何隐藏的需要,为什么应该在之前初始化ScheduleEJB。容器应该保证这一点您当前的代码中有一个实例可供使用,无需添加任何内容。谢谢,现在已经很清楚了!其他人正在读这篇文章:“永远不要像我所做的那样导入错误的库,我导入了com.google.inject.Singleton而不是javax.ejb.Singleton”再次感谢!我知道这是一个老问题,在Jboss 7.x上,我刚刚用@DependsOn引用了一个单例bean中的无状态bean:我认为它不符合EJB3,但它可以工作。来源:此票据: