2016-04-21 44 views
0

我有一个场景,其中有一个Utility类是Singleton,我需要将其注入另一个在类级别没有任何注释的类。将类注入到其实例手动创建的类

我该如何将它注入到这个类中?

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

+0

你能否用你想要完成的代码更新你的问题? – aribeiro

+0

你使用什么容器和版本?如果CDI 1.2,您可以使用CDI工具类以编程方式查找引用。 –

+0

我正在使用Jboss EAP 6 –

回答

0

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

例如假设该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 

希望它有帮助。