我的任务是在Oracle应用服务器版本10.1.3.0上部署由第三方构建的应用程序。我已经在Oracle Application Server版本10.1.2.0上部署了它,没有太大困难。我收到以下错误:
javax.naming.NamingException: Lookup error: javax.naming.AuthenticationException:
No such domain/application: "etrace"; nested exception is:
javax.naming.AuthenticationException: No such domain/application: "etrace"
[Root exception is javax.naming.AuthenticationException: No such domain/application: "etrace"]
at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:64)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
在此之前,应用程序代码实例化并初始化InitialContext对象并执行查找方法调用。它传递的值只是一个String,其值为所请求类的完全限定名称(com.ntc.tracing.app.security.EtraceAuthenticatorService)。查看InitialContext对象,我知道它在环境哈希表中设置了以下参数:
java.naming.factory.initial: com.evermind.server.rmi.RMIInitialContextFactory
java.naming.provider.url: ormi://ntcdevr310g22:12401/etrace
java.naming.factory.url.pkgs: oracle.oc4j.naming.url
java.naming.security.principal: admin
java.naming.security.credentials: admin1
提供者URL,主体和凭据由我(通过命令行)设置。
我对这个错误甚至意味着什么感到困惑。如果我给它一个“坏”的提供者url或没有Princip和pass,我会得到一个不同的错误(NullPointerException)。这告诉我它命中了命名提供者,但并不是说它找不到这个类。
任何建议都将不胜感激。现在我很难过。
答案 0 :(得分:1)
也许尝试指定部署app的oc4j实例?
有关ormi网址可以采用的所有选项,请参阅http://download.oracle.com/docs/cd/B31017_01/web.1013/b28958/rmi.htm#i1084816。看起来你没有指明它期待的东西。
答案 1 :(得分:1)
我以前见过像这样的JDNI问题,不管你信不信,问题是ClassLoader在多个JAR文件中看到了它想要的类。它加载了类信息OK,但是当实际实例化对象时,虚拟机嘶哑并且死于一个不太有用的JNDI错误。
确保您没有导出两个相同的罐子。你可以在OC4J的企业管理器中查看这个。
祝你好运!答案 2 :(得分:1)
冒着陈述已知事实的风险(但是忽略了它的可能性):部署到OC4J实例中的etrace
耳朵应用程序必须在java.naming.security.principal
中明确授予用户名通过其<namespace-access>
描述符中的orion-application.xml
元素对其JNDI树进行密钥访问。我们花了一些时间来弄清楚我们何时从WebSphere迁移应用程序。