2008-11-04 6 views
1

J'ai été chargé de déployer une application créée par un tiers sur Oracle Application Server, la version 10.1.3.0. Je l'ai déployé sur Oracle Application Server version 10.1.2.0 sans trop de difficultés. Je reçois l'erreur suivante:meilleure compréhension d'une pile OC4J Trace

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) 

Avant que le code d'application instancie et initialise un objet InitialContext et exécute l'appel de méthode de recherche. La valeur qu'il transmet est simplement une chaîne avec la valeur du nom qualifié complet de la classe demandée (com.ntc.tracing.app.security.EtraceAuthenticatorService). En regardant l'objet InitialContext, je sais qu'il a les paramètres suivants sont définis dans les environnements Hashtable:

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 

L'URL du fournisseur, le principal et les informations d'identification sont fixés par moi (via la ligne de commande).

Je suis confus quant à ce que l'erreur signifie même. Si je lui donne un URL "mauvais" fournisseur ou pas de principal et passez, j'obtiendrai une erreur différente (NullPointerException). Cela me dit que ça frappe le fournisseur de noms, mais ça ne veut pas dire qu'il ne peut pas trouver la classe.

Toutes les suggestions seraient grandement appréciées. En ce moment, je suis perplexe.

Répondre

1

J'ai vu des problèmes JDNI comme ça avant, et la question, croyez-le ou non, était le ClassLoader voir la classe désirée dans plus d'un fichier JAR. Il a chargé les informations de classe OK, mais quand il s'agissait d'instancier réellement l'objet, la VM croassa et mourut avec une erreur JNDI pas très utile.

Assurez-vous de ne pas exporter deux des mêmes Jars. Vous pouvez probablement vérifier ceci dans Enterprise Manager d'OC4J.

Bonne chance!

1

Au risque d'énoncer un fait connu (mais tout hasard, il est allé négligé): l'application de l'oreille etrace déployée dans votre instance de OC4J doit accorder explicitement le nom d'utilisateur dans la java.naming.security.principal clé d'accès à son arbre JNDI via l'élément <namespace-access> dans son descripteur orion-application.xml. C'est ce qui nous a pris un peu de temps lorsque nous avons migré une application de WebSphere.

Questions connexes