11
votes

Comment rechercher JNDI Ressources sur Weblogic?

J'ai déployé une application héritée sur Weblogic 11g. L'application a le code suivant:

       javax.naming.NameNotFoundException: While trying to look up /myDataSource in /app/webapp/axis2.war/60105275.; remaining name '/myDataSource'
        at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

      at weblogic.jndi.internal.ApplicationNamingNode.lookup(ApplicationNamingNode.java:144)


0 commentaires

4 Réponses :


6
votes

Java est l'espace de noms de la racine JNDI pour les ressources. Ce que l'extrait d'origine des moyens de code est que le conteneur de l'application a été initialement déployé dans n'appliquait aucun espaces de noms supplémentaires au contexte JNDI que vous avez récupéré (comme exemple, Tomcat ajoute automatiquement toutes les ressources à l'espace de noms comp / env , vous devriez donc faire datasource = (javax.sql.datasource) context.lookup ("Java: comp / env / jdbc / mydataSource"); si le nom de référence de la ressource est JDBC / myDataSource ).

Pour éviter de modifier votre code hérité, je pense que si vous enregistrez la source de données avec le nom myDataSource (supprimer le jdbc / ) Vous devriez être bien. Laissez-moi savoir si cela fonctionne.


8 commentaires

Merci d'avoir répondu. J'ai essayé de faire ça, mais je reçois toujours la même erreur. Je ne sais pas s'il y a un problème de configuration avec le serveur Weblogic lui-même.


Pouvez-vous montrer votre définition de ressources WebLogic (Minus mots de passe / nom d'hôte et tels)? En outre, je suppose que vous ne pouvez pas (ou préféreriez-vous non) recompiler le code?


Parlez-vous du weblogic.xml? Je n'en ai pas. Je n'ai que l'accès à la console d'administration Web basé sur le Web au serveur. J'ai défini une source de données générique et entré MyDataSource pour un nom JNDI.


Ah, intéressant: vous pourrez peut-être ajouter une ressource Ref pour l'application héritée spécifique qui corrigerait l'erreur, donc je joue avec cette interface. Cependant, vous devrez peut-être encore recompiler votre source si vous ne pouvez pas vraiment le faire fonctionner. Quel serveur J2ee était l'application déployée à l'origine?


merci je vais essayer ça. Il a été initialement déployé sur JBoss avec DataSource XML Files.


Vous n'avez pas besoin du Java: préfixe


Au lieu de cela, vous n'avez pas besoin du préfixe "Java: Comp / env /".


Oui, j'ai eu un problème similaire dans Weblogic et en supprimant le préfixe travaillée. DataSource = (javax.sql.dataSource) contexte (). Recherche ("mydatasource");



8
votes

Vous devriez pouvoir simplement faire cela: xxx

Si vous recherchez une destination distante, vous devez utiliser l'usine de contexte initiale WL comme ceci: < Pré> xxx

Weblogic .jndi.wlinitialContextextexFactory


3 commentaires

Merci Jeff, est-ce que l'hypothèse que mon nom de données JNDI est préfixé avec "JDBC /" dans Weblogic?


Non, vous mentionnez dans votre message que le nom JNDI est "JDBC / MyDataSource". Si le nom JNDI est "i.am.jeff.west" alors vous feriez Datasource = (javax.sql.datasource) context.lookup ("i.am.jeff.est"). Cependant, j'aime personnellement organiser des choses avec un préfixe qui rend le nettoyeur de l'arbre JNDI. Au fait, vous n'avez jamais répondu à ma demande de vous demander de migrer de JBoss à Weblogic - Jeffrey.west@oracle.com :)


En fait, je suppose que la réponse à votre question pourrait être «oui». De toute façon, lorsque vous utilisez l'usine de contexte initiale WebLogic, vous spécifiez le nom complet JNDI sans autre préfixe.



1
votes

J'ai eu un problème similaire à celui-ci. Il a été résolu en supprimant le JAVA: COMP / ENV / PREFIX et UTILISATION JDBC / MYDATASOURCE Dans la recherche de contexte. Tout comme quelqu'un a souligné dans les commentaires.


0 commentaires

1
votes

Je viens de mettre à jour l'application Legacy Weblogic 8 pour utiliser une source de données au lieu de la chaîne JDBC codée dur. DataSource JNDI Nom sur l'onglet Configuration de Weblogic Admin a montré: "weblogic.jdbc.esdatasource", ci-dessous, ci-dessous est de deux manières qui ont fonctionné: xxx

c'est tout les gens. Aucun mot de passe et usine de contexte initiale nécessaire de l'intérieur de l'application Weblogic.


0 commentaires