2009-06-29 3 views
0

Ich habe einige JSP-Code, der Servlet Context-Parameter aus einer web.xml-Datei liest. Diese Parameter enthalten Datenbankverbindungsinformationen, so dass der Programmierer nicht jedes Mal neu codieren muss, wenn sich die SID oder der Benutzer/das Kennwort oder der Servername ändert. Der Benutzer kann nur die Datei web.xml ändern.Problem mit dbConnection, Lesen in Kontext-Parameter von web.xml

<context-param> 
    <description>database user name</description> 
    <param-name>user</param-name> 
    <param-value>guest</param-value> 
</context-param> 

<context-param> 
    <description>database password</description> 
    <param-name>password</param-name> 
    <param-value>1234</param-value> 
</context-param> 

ich in diesen lesen Sie diesen Abschnitt der Bean-Klasse Code verwendet:

String user = servletContext.getInitParameter("user"); 
String pass = servletContext.getInitParameter("password"); 

Das Problem:

nächstes möchte ich die Datenbankverbindung tun einige Daten abzurufen:

Class.forName("oracle.jdbc.driver.OracleDriver"); 
dbConnection = DriverManager.getConnection(conn_url, user, pass); 

Dabei war conn_url eine Zeichenfolge bestehend aus Hostname (oder IP-Adresse) und der Portnummer.

Auf jeden Fall die dbConnection versagt:

java.sql.SQLException: ORA-01017: invalid username/password; logon denied 

obwohl ich Echo, was die String-Werte sind und sie sind, was sie sein sollten.

wenn ich gehen und zu sagen:

user = "guest"; 
pass = "1234"; 

sie die Zuordnung direkt dann funktioniert es gut.

Ich verstehe es nicht. Ich habe den ganzen Tag mit meinem Gehirn rasseln. Offensichtlich sucht die getConnection nach 3 Strings. Ich bin ratlos. Jede Hilfe wäre willkommen.

+0

Haben Sie die Anmeldedaten mit anderer Software verifiziert? – skaffman

+1

Auch würde ich vorschlagen, dies ist keine gute Möglichkeit, Datenbankkonfiguration zu behandeln. Das Öffnen von Oracle-Verbindungen ist langsam und teuer, Sie sollten wirklich einen richtigen Verbindungspool verwenden. Ihr Servlet-Container hat einen, und der Benutzer/Deployer kann die Details ändern, ohne mit den Interna Ihrer web.xml zu interagieren. – skaffman

Antwort

0

Ich habe getan und es funktioniert für mich. ich meinen Code teilen: in web.xml i wie folgt geschrieben:

<context-param> 
    <description>user name</description> 
    <param-name>user</param-name> 
    <param-value>postgres</param-value> 
</context-param> 
<context-param> 
    <description>password</description> 
    <param-name>password</param-name> 
    <param-value>samdx</param-value> 
</context-param> 

in Servlet-Datei:

ServletContext context = getServletContext(); 
      String name = context.getInitParameter("user"); 
      String password = context.getInitParameter("password"); 

con = DriverManager.getConnection(url,name, password); 

wie dies versuchen. Erhalte keine Werte von web.xml.

String name="guest" 
String password="1234" 
dbConnection = DriverManager.getConnection(conn_url,name, password); 
Verwandte Themen