无法在使用接口的 class 中使用 EJB
Can't use EJB in class that use interface
我在一个 JavaEE
项目中工作,我使用一个接口来实现方法,但是当我想使用一个 EJB
时,它说我的 EJB 是空的
Interface.java
public interface Interface { public void methodTest (); }
子Interface.java
public class SubInterface implements Interface {
@EJB
private myEJB myejb
@Override
public void methodTest(){
if( myejb == null ){
System.out.println("He is null");
}
}
}
myEJB.java
@Stateless
public class myEJB extends SomeAbstractFacade {
@PersistanceContext
private EntityManager em ;
....
}
UserController.java
@ManagedBean
@ViewScoped
public class UserController extends SomeAbstractController implements Seializable{
private interface myInterface ;
public void method (){
myInterface = new SubInterface();
myInterface.methodTest();
}
}
当我执行 methodTest 时,我们可以在输出中读到他为空。
谢谢
您将需要注入您的接口实例。当您使用 'new' 时,所有注释(@EJB 等)都将被忽略,因为依赖项管理器不知道该实例的创建。
因此在您的托管 bean 中注释私有接口字段,ejb 将为您注入。
@ManagedBean
@ViewScoped
public class UserController extends SomeAbstractController implements Seializable{
@Inject
private interface myInterface ;
public void method (){
myInterface.methodTest();
}
}
依赖注入仅在托管 类 上受支持,例如 Session Beans
或 Interceptors
,而在常规 POJO
上不受支持。因此你不能在 helper 类 上使用注入。我们可以举个简单的例子 Java Class
被归为一级, EJB
被归为上级,这意味着他们无法轻松沟通,解决方案是使用 lookup 意味着去搜索EJB
有他自己的道路。
我在一个 JavaEE
项目中工作,我使用一个接口来实现方法,但是当我想使用一个 EJB
时,它说我的 EJB 是空的
Interface.java
public interface Interface { public void methodTest (); }
子Interface.java
public class SubInterface implements Interface {
@EJB
private myEJB myejb
@Override
public void methodTest(){
if( myejb == null ){
System.out.println("He is null");
}
}
}
myEJB.java
@Stateless
public class myEJB extends SomeAbstractFacade {
@PersistanceContext
private EntityManager em ;
....
}
UserController.java
@ManagedBean
@ViewScoped
public class UserController extends SomeAbstractController implements Seializable{
private interface myInterface ;
public void method (){
myInterface = new SubInterface();
myInterface.methodTest();
}
}
当我执行 methodTest 时,我们可以在输出中读到他为空。
谢谢
您将需要注入您的接口实例。当您使用 'new' 时,所有注释(@EJB 等)都将被忽略,因为依赖项管理器不知道该实例的创建。
因此在您的托管 bean 中注释私有接口字段,ejb 将为您注入。
@ManagedBean
@ViewScoped
public class UserController extends SomeAbstractController implements Seializable{
@Inject
private interface myInterface ;
public void method (){
myInterface.methodTest();
}
}
依赖注入仅在托管 类 上受支持,例如 Session Beans
或 Interceptors
,而在常规 POJO
上不受支持。因此你不能在 helper 类 上使用注入。我们可以举个简单的例子 Java Class
被归为一级, EJB
被归为上级,这意味着他们无法轻松沟通,解决方案是使用 lookup 意味着去搜索EJB
有他自己的道路。