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