将类注入另一个手动创建实例的类

时间:2016-04-21 06:47:46

标签: java-ee ejb cdi

我有一个场景,我有一个Utility类,它是Singleton,我需要将它注入另一个在类级别没有任何注释的类。

如何将它注入此课程?

@EJB或@Inject无法正常工作,因为我使用@ EJB / @Inject的类正在使用getInstance()方法创建。

1 个答案:

答案 0 :(得分:0)

您不能在POJO中使用@ Inject或@EJB,但您可以进行经典的本地查找。

e.g。假设EJB实现了本地接口 IServiceBeanLocal ,其中包含您感兴趣的方法:

import javax.naming.InitialContext;
import javax.naming.NamingException;

public class Utility {

    private static IServiceBeanLocal service;

    try {
        InitialContext ic = new InitialContext();
        service = (IServiceBeanLocal) ic.lookup(ejbJndiName);

        // or simply
        // service = (IServiceBeanLocal) InitialContext.doLookup(ejbJndiName);

        service.method(); // invoke the desired method

    } catch (NamingException e) {
        logger.error("Lookup exception:", e);
    }
}

ejbJndiName 取决于EJB的包装,但必须类似于:

java:global/app_name/module_name/EJBClass!com.local.interface.path.IServiceBeanLocal

希望它有所帮助。