Java 在使用EJB3的Spring3.2.6中不推荐的AbstractStatesessionBean的onEjbCreate方法时获取NullPointerException

Java 在使用EJB3的Spring3.2.6中不推荐的AbstractStatesessionBean的onEjbCreate方法时获取NullPointerException,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个使用Spring2.5开发的现有应用程序,我不得不将其迁移到3.2.6。 迁移后,一切正常。。除了在Spring 3.2.6中使用弃用的AbstractStatesessionBean方法的onEjbCreate()时,我得到了一个NullPointerException。 我认为问题在于onEjbCreate()与EJB3.0不兼容。 我尝试使用@PostConstruct,但之后我无法获得现有getBeanFactory()的替代品 如果有人能帮我,我将不胜感激。 谢谢 这是在Spr

我有一个使用Spring2.5开发的现有应用程序,我不得不将其迁移到3.2.6。
迁移后,一切正常。。除了在Spring 3.2.6中使用弃用的
AbstractStatesessionBean
方法的
onEjbCreate()
时,我得到了一个
NullPointerException
。 我认为问题在于onEjbCreate()与EJB3.0不兼容。 我尝试使用
@PostConstruct
,但之后我无法获得现有
getBeanFactory()
的替代品

如果有人能帮我,我将不胜感激。 谢谢

这是在Spring2.5上运行的现有代码

@Override
protected void onEjbCreate() throws CreateException {
    mqConnectorFactory = (ConnectorFactory) getBeanFactory().getBean(BEAN_NAME_MQ_CONN_FACTORY);
}

正如您所注意到的,
AbstractStatesessionBean
已被弃用,取而代之的是EJB3风格的实现,而在Spring4.0中它被完全删除

对于EJB3,Spring提供了

有了这些,您可以简单地使用:

@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class MyEjb {

   @Autowired
   private ConnectionFactory mqConnectorFactory;

}

当然,您应该确保正确配置了Spring:
beanRefContext.xml
在类路径中。

AbstractStatelessSessionBean
不是EJB3,而是EJB2,所以不会这样工作。有关EJB3集成的详细信息,请参阅