2016-04-21 45 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 

希望它有幫助。