我有一个场景,我有一个Utility类,它是Singleton,我需要将它注入另一个在类级别没有任何注释的类。
如何将它注入此课程?
@EJB或@Inject无法正常工作,因为我使用@ EJB / @Inject的类正在使用getInstance()方法创建。
答案 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
希望它有所帮助。