@EJB不在websphere自由中工作8.5.5.9

时间:2016-06-15 14:22:27

标签: websphere-liberty

我们正在尝试从websphere应用服务器迁移到websphere liberty profile。

作为POC的一部分,我们正在部署一个带有EJB的示例战争。我们在一个宁静的Web服务中使用@EJB注入了EJB。在调用Web服务时,自由是投掷NPE。然后我尝试使用InitialContext来查找EJB及其工作正常。

以下是我启用的功能

  1. Jaxrs 1.1
  2. Jdbc 4.0
  3. ejbLite 3.1
  4. 我们在java 1.6上运行自由。

    以下是一些代码段

    @EJB(beanName="StudentServiceBean")
    private StudentServiceBean service;
    

    内部网络服务方法

    service.getStudent(id); // NPE here
    

    Ejb class

    @Stateless(name="StudentServiceBean")
    public class StudentServiceBean {}
    

    我甚至尝试使用@EJB进行查找,然后尝试使用简单的@EJB,因为EJB是一个本地EJB并且打包在war模块本身中

    P.S。 我将ejb移动到ejb模块并将应用程序打包为耳朵并尝试。仍然没有将ejb注入Web服务。

    然后我创建了一个新的ejb并将新的ejb注入到现有的ejb中。新的ejb被正确注入。我认为servlet容器和ejb容器存在一些问题。

    我尝试了自由以及jee7的功能,但我仍面临同样的问题。

2 个答案:

答案 0 :(得分:0)

如果无法将@EJB注释解析为EJB,那么当服务器创建包含@EJB注释的类的实例时,您将收到失败。因为这似乎没有发生在您身上,而实例创建正常,只是没有设置该字段,那么服务器不会扫描您的类以进行注释,或者您将javax.ejb.EJB注释类打包为部分你的申请。

我建议检查以下内容:

  1. 确保未将javax.ejb.EJB类打包为注释的一部分
  2. 检查WAR模块的web.xml是否具有版本> 2.4。不会扫描版本为2.4(或更早版本)的WAR模块进行注释。
  3. 检查web.xml是否包含设置metadata-complete =“true”。此设置将关闭注释扫描。

答案 1 :(得分:0)

JAX-RS 1.1是EE6的一部分。 EE6平台规范未列出支持注入的EE组件中的JAX-RS端点(表EE.5-1)。我不认为你的用法是便携式的。