【发布时间】:2016-04-04 06:55:48
【问题描述】:
我正在尝试将我的应用程序中的 2 个 EJB 模块从 EJB2.1 移植到 EJB3.0。我正在使用 Eclipse Kepler IDE 并使用 EJB3.0 配置重新生成会话 bean。我没有使用 ejb-jar.xml,因为在 EJB 3.0 中这应该是多余的。相反,我使用注释将我的 bean 标记为无状态并指定本地和本地主接口。我仍然保留 Local Home 界面,因为我希望我的项目的基本结构与 EJB2.1 中的类似。在迁移时,我还取消了 EJB 的 xml 绑定。
我们正在使用 WAS 7 应用程序服务器进行部署,当 EJB 成功部署且没有错误时,我在从不同 Web 应用程序的单独 POJO 类查找本地主页界面时遇到命名异常,这是必需的我基本上是想在引用EJB Local Home之后调用Local Home接口的create()方法。在下面添加代码示例:
会话 Bean:
@Stateless
@Local(AccessLDAPSessionLocal.class)
@LocalHome(AccessLDAPSessionLocalHome.class)
public class AccessLDAPSessionBean implements AccessLDAPSessionLocal {
//Business Logic
}
本地接口:
public interface AccessLDAPSessionLocal {
//business Interface
}
本地主页界面:
public interface AccessLDAPSessionLocalHome extends EJBLocalHome {
public AccessLDAPSessionLocal create() throws CreateException;
}
Pojo 类引用本地 Home 接口:
public static AccessLDAPSessionLocal getAccessLDAPSessionBean() throws NamingException, CreateException {
if (accessLDAPSessionBean == null) {
InitialContext context = new InitialContext();
Object obj = context.lookup("java:global/AccessLDAP/AccessLDAPSessionBean!com.ibm.asset.hrportal.core.ejb.ldap.AccessLDAPSessionLocalHome");
accessLDAPSessionBean = ((AccessLDAPSessionLocalHome) obj).create();
}
return accessLDAPSessionBean;
}
我的本地和本地主页接口也在我用作 jar 文件的 EJB 客户端内,而我的会话 Bean 位于用作 EAR 的实际 EJB 内。
以下是我得到的错误:
NamingException::javax.naming.NameNotFoundException: Name global not found in context "java:".
我是否缺少某些配置导致 JNDI 查找失败?任何帮助将不胜感激。提前致谢。
【问题讨论】:
标签: java jndi ejb-3.0 websphere-7