2016-10-30 6 views
0

Ich versuche Oracle DB über Java und Tomcat zu verwenden. Das Problem ist, dass ich die korrekte Verbindung über den Verbindungspool und die Deklaration in der Datei "server.xml" nicht konfigurieren kann. Also, wenn ich diesen Code in einer Java-Klasse verwenden:Wie erstelle ich Oracle DB Verbindung über Java und Tomcat?

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:my","system","****"); 
String sql = "SELECT * FROM TestTable2"; 
PreparedStatement pStatement =con.prepareStatement(sql); 
ResultSet rs = pStatement.executeQuery(sql); 

Alles funktioniert gut. Aber wenn ich diesen Code in einer Java-Klasse verwenden:

Context initContext = new 
InitialContext(); 
Context envContext = (Context)initContext.lookup("java:/comp/env"); 
DataSource datasource = (DataSource)envContext.lookup("jdbc/LocalMyDataBaseOracle"); 
Connection sqlCon = datasource.getConnection(); 

String sql = "SELECT * FROM TestTable2"; 
PreparedStatement pStatement =sqlCon.prepareStatement(sql); 

ResultSet rs = pStatement.executeQuery(sql); 

Dieser Code in

<ResourceLink type="oracle.jdbc.pool.OracleDataSource" 
name="jdbc/LocalMyDataBaseOracle" 
global="jdbc/MyDataBaseOracle" 
/> 

und diesen Code in

<Resource driverClassName="oracle.jdbc.driver.OracleDriver" 
factory="oracle.jdbc.pool.OracleDataSourceFactory" 
name="jdbc/MyDataBaseOracle" 
username="system" 
password="****" 
type="oracle.jdbc.pool.OracleDataSource" 
url="jdbc:oracle:thin:@localhost:1521:my" 

autoReconnectForConnectionPools="true" 
autoReconnectForPools="true" 
testOnBorrow="true" 
testWhileIdle="true" 
validationQuery="select 1 from dual" 
validationInterval="34" 
/> 

ich eine Ausnahme „java.sql.SQLException erhalten : ORA-01017: ungültiger Benutzername/Passwort; Anmeldung verweigert "in Zeile Connection sqlCon = datasource.getConnection();

Der Benutzername und das Passwort sind im ersten und zweiten Code identisch. Bitte sagen Sie, was schief läuft?

+0

1) Passwort hat nur englische Buchstaben und Ziffern. 2) Ich benutze SYSTEM nur für einen Moment, während ich keine Verbindung herstellen kann, dann werde ich es ändern. –

Antwort

0

Das einzige, was ich denke, ist, dass Sie einige nationale Zeichen im Passwort haben und aufgrund der unterschiedlichen Codierung von Java-Datei und Config XML geht es anders. Es sei denn, es ist nur ein Tippfehler.

Btw. Warum loggen Sie sich als Systembenutzer ein, der eher für interne Dinge gedacht ist?

Verwandte Themen