我们正在尝试从websphere应用服务器迁移到websphere liberty profile。
作为POC的一部分,我们正在部署一个带有EJB的示例战争。我们在一个宁静的Web服务中使用@EJB注入了EJB。在调用Web服务时,自由是投掷NPE。然后我尝试使用InitialContext来查找EJB及其工作正常。
以下是我启用的功能
我们在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的功能,但我仍面临同样的问题。
答案 0 :(得分:0)
如果无法将@EJB注释解析为EJB,那么当服务器创建包含@EJB注释的类的实例时,您将收到失败。因为这似乎没有发生在您身上,而实例创建正常,只是没有设置该字段,那么服务器不会扫描您的类以进行注释,或者您将javax.ejb.EJB注释类打包为部分你的申请。
我建议检查以下内容:
答案 1 :(得分:0)
JAX-RS 1.1是EE6的一部分。 EE6平台规范未列出支持注入的EE组件中的JAX-RS端点(表EE.5-1)。我不认为你的用法是便携式的。