java - 初始化@EJB字段

标签 java spring jboss ejb

我是 EJB 新手。

我有一个包含以下字段的类

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class MyServiceFacadeBean implements MyServiceFacadeLocal, MyServiceFacadeRemote {

    @EJB(name = "ejb/CatalogService")
    private CatalogService catalogService = null;
    ....
}

我在 Sring IOC 中注入(inject)它的实现时实例化了该对象:

<bean id="contestServiceFacade" class="my.company.service.facade.contest.ejb.MyServiceFacadeBean">
 </bean>

但是在我的 Controller 中调用它的方法后,我在 catalogService 字段上得到 NullPointerException 。那么我的外观应该如何正确实例化?

更新1:我尝试用另一种方法插入bean here 。也许对回答这个问题会有帮助。

更新 2:我无法更改我的 EJB 的源,但可以为我的 Controller 执行此操作。

最佳答案

如果您使用的是 JBoss 5,则无法将 EJB 投入 war 。您需要使用 EJB jarwar 文件(+lib jar)创建一个ear文件。有关 ear 的更多信息可以在 JavaEE 教程 ( http://docs.oracle.com/javaee/5/tutorial/doc/bnaby.html ) 中找到。

当 EJB 正确打包在耳朵中时,它们将在部署时由 Jboss 启动。

Spring 将能够通过 JDNI 访问它们,如下所述: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/ejb.html

另一个选择是切换到 Jboss 7,因为 EJB 可以处于 war 中。但这需要一些努力,因为他们在 Jboss 7 中改变了很多东西。

关于java - 初始化@EJB字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13698937/

相关文章:

java - 如何在 Spring JDBC 中获取当前的 Connection 对象

java - 在spring xml中设置注解属性

java - @OneToMany 和@ManyToOne 之间的双向关系 @Formula 返回 null

java应用程序无法打开URL地址0.0.0.0

java - 多个应用程序在同一 JVM 上运行时的 JVM 内存分析

java - 具有基本身份验证长密码的 httpurlconnection

java - 关于try catch语句的问题

java - 在 iText PDF Java 中验证签名和安全 PDF 的证书

JavaFX:如何使回车键提交TextArea

java - JBoss AS 7 : Logging to remote host (logstash)