0
我有一个场景,其中有一个Utility类是Singleton,我需要将其注入另一个在类级别没有任何注释的类。将类注入到其实例手动创建的类
我该如何将它注入到这个类中?
@EJB或@Inject不起作用,因为我正在使用@ EJB/@Inject的类使用getInstance()方法创建。
我有一个场景,其中有一个Utility类是Singleton,我需要将其注入另一个在类级别没有任何注释的类。将类注入到其实例手动创建的类
我该如何将它注入到这个类中?
@EJB或@Inject不起作用,因为我正在使用@ EJB/@Inject的类使用getInstance()方法创建。
您不能在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
希望它有帮助。
你能否用你想要完成的代码更新你的问题? – aribeiro
你使用什么容器和版本?如果CDI 1.2,您可以使用CDI工具类以编程方式查找引用。 –
我正在使用Jboss EAP 6 –