我想检查我的有状态 bean 是否被钝化/激活,并且相应的回调是否被正确调用。
为此,我想配置容器 GlassFish 和/或 JBOSS 以限制 bean 的实例数。
可能吗 ?如果是,如何?
感谢您为我指明正确的方向。
对于 JBOSS,找到注解 org.jboss.ejb3.annotation.CacheConfig,参数为 maxSize 和 idleTimeoutSeconds。
不过,我还不知道如何在不使用注释的情况下使用 xml 进行配置。
在JBoss中,你要查看的配置文件是conf/standardjboss.xml
它看起来很吓人(确实如此),但寻找一个名为“标准有状态会话Bean”的容器配置元素。在此元素的末尾,您将看到 container-pool-conf 部分,它定义了此配置的最大实例数。这个文件可以修改,或者你可以定义你自己的配置,虽然我不太清楚如何去做。我怀疑它在 META-INF/jboss.xml 文件中。
一旦根据需要定义了配置,就需要配置 EJB 本身以使用它。在 EJB 2 下,您将使用 META-INF/jboss.xml,但在 EJB3 的美妙的无描述符世界中,我不确定。
所以答案可能在于一个适当配置的 META-INF/jboss.xml 文件。对不起,我不能更准确,但至少知道你知道在哪里看。
对于 Glassfish 平台,您可以按照此处的信息执行相同操作:
http://docs.sun.com/app/docs/doc/819-3673/beaqm?a=view
查看页面底部的一些示例。
为了跟踪特定 bean 何时被实例化或 GC,我添加了一些日志记录方法并使用 @PostConstruct 和 @PreDestroy 注释它们。
我一直在 JBOSS5.1 中开发 EJB3 应用程序。对于 EJB,我创建了一个 init 方法并使用 @PostConstruct 进行了注释,并在其中提供了一些日志信息。但是我注意到一个有趣的事实是 PostConstrcut 方法在部署时没有被调用。但是当我们查看 EJB 时,正在调用。这是否意味着 JBOSS5.1 根本没有进行 Bean 池化。问候哈里