如何在JBoss 4.2.3.GA中以编程方式将POJO取消/注册为服务

如何在JBoss 4.2.3.GA中以编程方式将POJO取消/注册为服务,jboss,jndi,Jboss,Jndi,我需要能够绕过整个部署程序的错误,以编程方式在JBoss中将POJO注册/注销为服务 目前,我正在动态创建一个MBean接口,并将其注册到JBoss MBeanServer,然后向Jndi注册本地/远程接口 这可以正常工作(我可以从一个普通的SAR引用中得到一个标准服务,其中一个带有@EJB注释的服务pojo)——但是容器似乎在调用unbind()和unregisterMBean()后留下了过时的引用 很明显,我没有以容器期望的方式处理它,因此我遗漏了一些东西,但是我遗漏了什么呢?还是有更简单的

我需要能够绕过整个部署程序的错误,以编程方式在JBoss中将POJO注册/注销为服务

目前,我正在动态创建一个MBean接口,并将其注册到JBoss MBeanServer,然后向Jndi注册本地/远程接口

这可以正常工作(我可以从一个普通的SAR引用中得到一个标准服务,其中一个带有@EJB注释的服务pojo)——但是容器似乎在调用unbind()和unregisterMBean()后留下了过时的引用

很明显,我没有以容器期望的方式处理它,因此我遗漏了一些东西,但是我遗漏了什么呢?还是有更简单的方法(在API方面看不到太多)


谢谢。

您致电unbind and unregister,似乎是在对清理工作进行尽职调查。你能详细说明你所说的“过时的参考资料”是什么意思吗?此外,您是否考虑过使用@Service注释来创建单例EJB?它们基本上是POJO,但它们有一个干净且定义良好的生命周期、EJB的事务支持、可选的JMX管理接口以及将远程和本地接口发布到JNDI中的能力。@Nicholas-我需要以编程方式注册这些POJO,部署SAR甚至使用@Service注释都是不可能的。我可以向JNDI和MBeanServer注册这些POJO,并通过@EJB在标准的@Service注释服务中访问它们-但是当我从JNDI和JMX中注销它们时,@EJB中的引用仍然存在,所以实际上它不是一个过时的引用,但它应该是我现在得到的。在ServiceA的声明性(非earcam)POJO注册中,ServiceB引用@EJB,当ServiceA取消部署时,ServiceB将随之进行注册。我不确定的是,在您的情况下,ServiceB仍然存在,您希望@EJB ref在部署ServiceA的新实例之前无效?或者类似的东西?我开始摆弄org.jboss.ejb3.EJBContainer和org.jboss.ejb3.ServiceContainer,但都没有用。只是不知道是否有可能以编程方式与JBoss 4.2.3.GA交互。我有95%的方法(我可以用JNDI和JMX注册我自己的POJO服务,用@EJB注册普通JBoss@Service服务中的引用),但由于调用unregister等时引用没有正确清除,这证明是一个无法使用的练习。哦,好吧,我有一个非常机械的方法,可以达到相同的最终结果,但需要大量的锅炉板代码。@Nicholas感谢您的输入,但我不会占用您更多的时间(这个问题非常模糊,但细化需要大量的代码)