1

我的任务是在 Oracle 应用服务器版本 10.1.3.0 上部署由第三方构建的应用程序。我已经将它部署在 Oracle 应用服务器版本 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 对象并执行查找方法调用。它传递的值只是一个字符串,其值为被请求的类的完全限定名称 (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 或没有主体并通过,我会得到一个不同的错误 (NullPointerException)。这告诉我它正在访问命名提供程序,但并不是说它找不到类。

任何建议将不胜感激。现在我被难住了。

4

3 回答 3

1

冒着陈述一个已知事实的风险(但很有可能它被忽略了):部署到 OC4J 实例中的ear 应用程序必须通过其描述符中的元素etrace显式授予java.naming.security.principal密钥中的用户名访问其 JNDI 树的权限。当我们从 WebSphere 迁移应用程序时,我们花了一些时间才弄清楚这一点。<namespace-access>orion-application.xml

于 2009-02-19T23:10:11.750 回答
1

也许尝试指定应用程序部署的 oc4j 实例?

有关ormi URL 可以采用的所有选项,请参见http://download.oracle.com/docs/cd/B31017_01/web.1013/b28958/rmi.htm#i1084816 。看起来你没有指定它所期望的东西。

于 2008-11-11T09:53:17.763 回答
1

我以前见过这样的 JDNI 问题,不管你信不信,问题是 ClassLoader 在多个 JAR 文件中看到了它想要的类。它可以加载类信息,但是在实际实例化对象时,VM 因一个不太有用的 JNDI 错误而发出嘶哑并死亡。

确保您没有导出两个相同的罐子。您可能可以在 OC4J 的企业管理器中检查这一点。

祝你好运!

于 2009-02-05T18:42:35.083 回答