您能告诉我如何在Weblogic上查找EJB吗? 我有以下bean:
@Stateless
@EJB(name = "DataAccess", beanInterface = DataAccessLocal.class)
public class DataAccess implements DataAccessLocal {
...
}
我在其他类中需要这个bean,它不是托管内容的一部分(只是简单的类),所以我想它应该这样做:
DataAccessLocal dataAccess = DataAccessLocal.class.cast((new InitialContext()).lookup("%SOME_JNDI_NAME%"));
问题是在Weblogic 10.x.x AS的情况下应该用什么%SOME_JNDI_NAME%?
任何帮助将不胜感激。
答案 0 :(得分:9)
我会将您的EJB类更新为:
@Stateless(name="DataAccessBean", mappedName="ejb/DataAccessBean")
@Remote(DataAccessRemote.class)
@Local(DataAccessLocal.class)
public class DataAccess implements DataAccessLocal, DataAccessRemote {
...
}
从部署在同一EAR中的类(使用本地接口)查找EJB:
InitialContext ctx = new InitialContext(); //if not in WebLogic container then you need to add URL and credentials.
// use <MAPPED_NAME>
Objet obj = ctx.lookup("java:comp/env/ejb/DataAccessBean");
通常首选EJB注入,您可以按如下方式执行:
@EJB(name="DataAccessBean")
DataAccessLocal myDataAccessBean;
如果您尝试远程使用EJB,则需要使用远程接口和以下JNDI名称:
DataAccessBean#<package>.DataAccessRemote