| 
 | 
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-2025 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.