De la “ORA-01017: invalid username/mot de passe d'ouverture de session refusé” lorsque vous essayez de créer une source de données dans Tomcat 6

Été tirant mes cheveux en essayant de définir une source de données dans Tomcat pour une application. Les étapes que j'ai prises sont

  1. Créer un META-INF/context.xml avec le contenu suivant

    <Context>
     <Resource name="jdbc/mydb"
      auth="Container"
      type="javax.sql.DataSource"
      driverClassName="oracle.jdbc.OracleDriver"
      url="jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6"
      username="foo"
      password="foobar"
      maxActive="20"
      maxIdle="30"
      maxWait="-1" />           
    </Context>
  2. Entrez le texte suivant dans WEB-INF/web.xml

    <resource-ref>
        <description>Datasource</description>
        <res-ref-name>jdbc/mydb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
  3. De l'utiliser dans le code

    public class MyServlet extends HttpServlet {
    
      private DataSource ds;             
    
      public void init() {
    
        try {
        Context ctx = new InitialContext();
        ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mydb");
    
        } catch (NamingException e) {           
            e.printStackTrace();
        }
     }
    
      protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException {
        //this is where the exception is thrown
        Connection conn = ds.getConnection(); 
    
        //...do stuff with the connection
    }

Mais continuer à obtenir l'erreur suivante

"Rencontre d'exception au cours de cartographie. Erreur: Impossible de créer PoolableConnectionFactory (ORA-01017: invalid username/mot de passe; connexion refusée
)
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Impossible de créer PoolableConnectionFactory (ORA-01017: invalid username/mot de passe; connexion refusée"

Je sais que le nom d'utilisateur et mot de passe sont corrects. Parce que le code suivant fonctionne

    Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "foo", "foobar");

J'ai même essayé d'entrer une url non valide, mais toujours la même erreur. Ce qui se passe???

Aussi, ne Tomcat avoir un moyen de tester la source de données similaires pour WebLogic ou Glassfish?

  • Apparemment, vous n'avez pas un utilisateur foo avec le mot de passe foobar
  • C'est un peu comme un exemple. J'ai vérifié que le nom d'utilisateur et mot de passe sont corrects.
  • Apperently pas, sinon vous ne seriez pas obtenir le message d'erreur
  • Ce code fonctionne <br /> Classe.forName("oracle.jdbc.OracleDriver").newInstance(); conn = DriverManager.getConnection("jdbc:oracle:thin:@gpqa6.myserver.com:1526:gpqa6", "toto", "toto"); Mais si l'on utilise la même configuration de source de données, il n'est pas
  • J'en ai un similaire d'installation ici, mais ça fonctionne. la seule différence étant driverClassName="oracle.jdbc.le pilote.OracleDriver" comme je l'ai utiliser un pilote pour oracle11 + le fait que la source de données est injecté dans mes objets à l'aide de printemps. vérifiez votre pilote jdbc assurez-vous que vous avez seulement 1 d'entre eux et pas plusieurs versions (pour l'exemple 1, dans la commune de la-lib de tomcat et un autre dans le web-inf/lib de votre application), car cela crée quelques vilains bugs.
  • double possible de Oracle JDBC : invalid username/mot de passe (ora-01017)

InformationsquelleAutor duvo | 2012-05-01