Jakarta ee EJB调用稍后调用另一个EJB的方法->;返回空

Jakarta ee EJB调用稍后调用另一个EJB的方法->;返回空,jakarta-ee,dependency-injection,ejb,glassfish-3,ejb-3.1,Jakarta Ee,Dependency Injection,Ejb,Glassfish 3,Ejb 3.1,我有一个这样的结构 @Stateless public class CoreMainEJB implements CoreMainEJBRemote, CoreMainEJBLocal { @Override public void process(String configFileName) throws Exception { ... PackageProcessor p = new PackageProcessor();

我有一个这样的结构

@Stateless
public class CoreMainEJB implements CoreMainEJBRemote, CoreMainEJBLocal {

    @Override
    public void process(String configFileName) throws Exception {
         ...
         PackageProcessor p = new PackageProcessor();
         p.processPackage(Object something); 
    }
}
然后在
PackageProcesor.java中
->没有注释
@无状态

public class PackageProcessor(){
    @EJB
    private GenericEJB genericEJB;

    public void processPackage(Object something){
        genericEJB.create(something);

    }
    ...
}
GenericEJB的注入返回null。下面是GenericEJB的内容

@Stateless
@LocalBean
public class GenericEJB{
     @PersistenceContext(unitName = "someWebPUnit")
     private EntityManager em;

     public void create(Object t){
         em.persist(t);
     }
}

你知道为什么在创建这样的对象时,
GenericEJB
的注入会返回null吗?

PackageProcessor p = new PackageProcessor()
EJB容器对它一无所知,容器不管理这个对象的生命周期,它也不能注入任何东西,用方面包装它,应用事务行为。简单地说:对于您的应用服务器,这个对象不存在


当然,如果您使用
@Stateless
注释
PackageProcessor
,并将其作为普通EJB注入,它就会工作。您不想这样做的原因是什么?

使用多个EJB是个坏主意吗?因为如果我照你说的做,我可能会得到5-6个EJB。就性能而言是不是很差?与将这些方法放在同一个EJB中相比?我想我要问的是EJB注入是否会影响性能?5-6 EJB是否会使项目更重?:-)。我可以想象有数百甚至数千个EJB的项目。。。依赖项注入只影响初始化时间,即首次创建bean时。他们通常是事后汇集。另外,当几行之后您将访问数据库或JMS队列时,不要担心性能问题……此外,在EJB中,无状态会话bean的注入可能非常便宜,因为容器只需向会话bean注入一种URL(代理),而不是实际的实例。