应用程序名称包含句点时的NameNotFoundException

时间:2010-10-28 12:58:41

标签: java ejb-3.0 ejb jndi jdeveloper

我有一个简单的EJB应用程序,大约在6个月前工作。我安装了最新的JDeveloper(11.1.1.3.0),当我遇到这个问题时,我正试图让它再次运行。

此行上的部署失败:

TeacherManager teacherManager = (TeacherManager)context.lookup("Uran_2.0-TeacherManager#hu.elte.pgy2.BACNAAI.UranEJB.TeacherManager");

留言(我强调):

  

javax.naming.NameNotFoundException:尝试查找'Uran_2.0-TeacherManager#hu.elte.pgy2.BACNAAI.UranEJB.TeacherManager'时未找到子上下文'Uran_2'。已解决'' [根异常是javax.naming.NameNotFoundException:尝试查找'Uran_2.0-TeacherManager#hu.elte.pgy2.BACNAAI.UranEJB.TeacherManager'时未找到子上下文'Uran_2'。解决 '']; 剩余名称'Uran_2 / 0-TeacherManager#hu / elte / pgy2 / BACNAAI / UranEJB / TeacherManager '

显然应用程序的名称(Uran_2.0)以某种方式提示JDeveloper(或JNDI?我不确定)用.替换名称中的/,这显然会导致JNDI查找失败。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:0)

您的无状态/有状态EJB应明确指定JNDI名称:

@Stateless(mappedName = ?)

如果这不起作用,您可以使用context.list("")浏览jndi树,以查看部署的远程EJB。