C3P0, rawConnectionOperation () & java .lang.IllegalArgumentException - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь использовать нестандартный метод getServerJobIdentifier (), который является частью IBM Java Tool Box (jt400.jar) и класса com.ibm.as400.access.AS400JDBCConnection с C3P0 & rawConnectionOperation ( ). Я получаю "java .lang.IllegalArgumentException: объект не является экземпляром объявления класса". Я перепробовал множество вариантов, но не наткнулся на правильные параметры для прохождения. Я использую C3P0 0.9.5.4. Ниже приведен фрагмент кода:

// The method I want to call.
// getServerJobIdentifier, public abstract java.lang.String com.ibm.as400.access.AS400JDBCConnection.getServerJobIdentifier()
String driverClassName = "com.ibm.as400.access.AS400JDBCDriver";
String m_DatabaseConnectionString = "jdbc:db2:*local;naming=sql;extended metadata=true";
Connection m_dbConnection;
ComboPooledDataSource   m_cpds;

m_cpds = new ComboPooledDataSource();
try {
    m_cpds.setDriverClass(driverClassName); //loads the jdbc driver
}
catch (Exception e) {
    e.printStackTrace();
    System.exit(0);
}
m_cpds.setJdbcUrl(m_DatabaseConnectionString);

m_dbConnection = m_cpds.getConnection();
String qualifiedName = "";
C3P0ProxyConnection castCon = (C3P0ProxyConnection)m_dbConnection;
Method m = AS400JDBCConnection.class.getDeclaredMethod("getServerJobIdentifier");
// This does return what I want.  getServerJobIdentified() has no parameters.
System.out.println("method=" + m.toString());
Object[] args = new Object[] {};

System.out.println("calling rawConnectionOperation");

qualifiedName = (String) castCon.rawConnectionOperation(m, C3P0ProxyConnection.RAW_CONNECTION, args);
// never gets here
System.out.println("qualifiedName=" + qualifiedName);

Я знаю, что , что близко, или я так думаю. Спасибо!

...