|
The value of JDBCSpecs and JDBCDriver are as in the original email. This is old IBM VAJ Persistence Builder technology used for object-relational mapping in this application (a 2000-01 application). I include three methods: (1) npmt.services.NpmtdbnpmtdbDataStore.getConnectionSpec(): This is a callback method in a subclass of Persistence Builder (PB) SqlDataStore, which the PB uses to get the connection specification information (driver, URL) (2)com.ibm.vap.RelationalPersistence.SqlDataStore.createConnectionWithAlias: The method that uses the information provided in (1) in order to perform the connection (3) com.ibm.ivj.db.base.DatabaseConnection.connectToDataSource(): The method that actually invokes DriverManager.getConnection() It is hard to provide a stack trace since the Persistence Builder framework "eats" the SQLException and returns a higher-level exception within the reason only but no stack trace. Even the highest level PB trace level does not return the exception. If this were not platform-specific I would get the stack trace by running in debug mode from within WSAD, but now on iSeries debugging is much harder and I've actually never done it. Thanks! Panagiotis. ==================================================== public com.ibm.ivj.db.base.DatabaseConnectionSpec getConnectionSpec() { DatabaseConnectionSpec aConnectionSpec; //get server name using the Utils method and don't let it be hardcoded String serverName = npmt.srv.common.Utils.getServer().trim(); int delimPosition = Environment.getJDBCSpecs().indexOf("|"); String driverName = Environment.getJDBCDriver(); String dataSourceName = Environment.getJDBCSpecs().substring(0, delimPosition) + serverName + Environment.getJDBCSpecs().substring(delimPosition + 1); System.out.println("DEBUG: driver name: " + driverName); System.out.println("DEBUG: data source name: " + dataSourceName); aConnectionSpec = new DatabaseConnectionSpec("VA1", driverName, dataSourceName); return aConnectionSpec; } ==================================================== protected Object createConnectionWithAlias(String anAlias, DatabaseLogonSpec aLogonSpec) { DatabaseConnection conn = null; DatabaseConnectionSpec aSpec = (DatabaseConnectionSpec) getStoredConnectionSpec(aLogonSpec).clone(); aSpec.setAlias(anAlias); try { conn = getConnectionPolicy().connect(aSpec); conn.setMaxCacheSize(getMaxPreparedStatementCacheSizePerConnection()); } catch (SQLException ex1) { Trace.showException(ex1, this, "createConnectionWithAlias()"); errorConnectionFailed(getConnectionSpec().getDriverName(), ex1.getMessage()); } catch (ClassNotFoundException ex2) { Trace.showException(ex2, this, "createConnectionWithAlias()"); errorJDBCDriverNotFound(getConnectionSpec().getDriverName()); } catch (Exception ex3) { Trace.showException(ex3, this, "createConnectionWithAlias()"); } return conn; } ==================================================== /** * Attempt to connect using the supplied logon and connection specs */ public synchronized void connectToDataSource() throws SQLException { DatabaseLogonSpec aLogonSpec = getConnectionSpec().getLogonSpec(); if (aLogonSpec == null) throw (new SQLException(resobjectExtender.getString("incorrectLogon"),"08004")); String anId = aLogonSpec.getId(); String aPassword = aLogonSpec.getPassword(); if (aLogonSpec.isValid()) { try { setJdbcConnection(DriverManager.getConnection(getConnectionUrl(), anId, aPassword)); } catch (SQLWarning warn) { warn.printStackTrace(); } initialize(); } else { /* This never makes it to the driver, so return a meaningful exception */ throw (new SQLException(resobjectExtender.getString("incorrectLogon"),"08004"));//$NON-NLS-2$ //$NON-NLS-1$ } } ======================================================= /** * This method will return a connection object after successfully connecting * using the supplied connection info. */ public DatabaseConnection connect () throws SQLException, ClassNotFoundException { DatabaseConnection connection; JDBCConnectionManager databaseManager; databaseManager = JDBCConnectionManager.singleton(); databaseManager.registerDriver(getDriverName()); connection = databaseManager.getConnectionAtAlias(getAlias()); /* Check to see if a connection with this alias already exists */ if ( connection != null ) { if (connection.getConnectionSpec().matches(this)) return connection; }; connection = databaseManager.connectUsingSpec (this); // If this connection has an alias, register it if (getAlias()!= null) databaseManager.registerConnection(connection); return connection; } Rune Kaus <rune@xxxxxxx> wrote: If you have a snippet of your code to share with us, and maybe a stack trace, it would help the investigation. Rune PS. You are of course sure that the username and password is correct. Panagiotis Varlagas wrote: When attempting to use the native iSeries JDBC driver to access the local iSeries DB2 db, I get the following SQLException: "The Username and/or password supplied is incorrect." (SQL1403N) The JDBC Driver used is: com.ibm.db2.jdbc.app.DB2Driver and the URL string is: jdbc:db2:MYDATABASE;errors=full;translate binary=true;naming=system;libraries=ICBSUATDB1 ICBSSMS712;user=MYUSER;password=MYPASSWORD The configuration is a Java application and a DB2 both on the _same_ iSeries (AS/400) machine. I have tried different renditions of the URL string, in particular: 1) With *LOCAL instead of MYDATABASE and 2) Without the user and password properties Four (4) combinations in all. In all four cases the above error ("The Username and/or password supplied is incorrect.") was gotten! (Reminder: Both Java app and DB2 db live on the same iSeries box) Any help as to (i) why this error occurs and (ii) how it can be eliminated would be _greatly_ appreciated!!! Panagiotis Varlagas Senior Software Developer, NovaBank S.A. varlagpa@xxxxxxxxxxx varlagas@xxxxxxxxx
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.