0

我正在尝试访问 EJB3 中的 Spring bean,但它似乎没有被注入,因为我得到了 NullPointerException。

我想我不了解 beanRefContext.xml 的作用以及它的使用方式。

以下 EJB 和 XML 位于服务 JAR 中,该 JAR 位于 WAR 的 WEB-INF/lib 中。Spring bean(DAO)在一个单独的 JAR 中,也在 WEB-INF/lib 中。

EJB

@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class TimetrackingServiceBean implements TimetrackingService {

    @Autowired
    private UserDao userDao;

    @Override
    public List<User> getAllUsers() {
        return this.userDao.findAll(); // <-- NPE
    }
}

beanRefContext.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

        <bean name="serviceContext" class="org.springframework.context.support.ClassPathXmlApplicationContext"></bean>

</beans>

服务上下文.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <context:annotation-config />

</beans>

编辑

我阅读了“将 Spring bean 注入 EJB3”的帖子,现在我在 web.xml 中添加了一个上下文参数,但问题仍然存在。

网页.xml

...
<context-param>
  <param-name>parentContextKey</param-name>
  <param-value>serviceContext</param-value>
 </context-param>
...

我显然需要更多的帮助和解释。

4

1 回答 1

0

您可能已经注意到,但如果您错过了,beanRefContext.xml需要传递您的services-context.xmlas参数,但是您的代码中缺少它

于 2014-04-04T08:52:52.823 回答