Java 当应用程序名称包含句点时,NameNotFoundException

Java 当应用程序名称包含句点时,NameNotFoundException,java,ejb-3.0,ejb,jndi,jdeveloper,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.

我有一个简单的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查找失败。我如何解决这个问题?

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

@无状态(mappedName=?)


如果这不起作用,您可以使用
context.list(“”
浏览jndi树,以查看部署了哪些远程EJB。

是的,它就在那里:
@Stateless(name=“TeacherManager”,mappedName=“Uran_2.0-TeacherManager”)
。JNDI仍然在查找
Uran_2/0-TeacherManager
。然后查找“Uran_2\\.0-TeacherManager”,它给出:
javax.naming.NameNotFoundException:在尝试查找“Uran_2.0-TeacherManager”hu.elte.pgy2.BACNAAI.UranEJB.TeacherManager”时,没有找到子文本“Uran_2.0-TeacherManager#hu”。已解析“”[根异常为javax.naming.NameNotFoundException:在尝试查找“Uran_2.0-TeacherManager#hu.elte.pgy2.BACNAAI.UranEJB.TeacherManager”时未找到子上下文“Uran_2.0-TeacherManager#hu”。已解析“”;剩余名称“Uran_2/0-TeacherManager#hu/elte/pgy2/BACNAAI/UranEJB/TeacherManager”
。稍微好一点,但还不是很好。部分“#hu/elte…”可能是可选的(我不知道你是否仍然像在问题中那样包括它)。我不知道如果你逃过了这一关怎么办。这里有一个提到点问题的参考:。