任何人都知道在我的Java程序中嘗試訪問不同Linux服務器上的Oracle數據庫時可能導致以下RUN TIME錯誤?使用JDBC連接到遠程數據庫的ClassCastException的newbie java錯誤
java.lang.ClassCastException : com.sun.gjc.spi.jdbc40.CallableStatementWrapper40 cannot be cast to oracle.jdbc.OracleCallableStatement
我以下Oracle的JDBC開發人員指南(http://isu.ifmo.ru/docs/doc112/java.112/e10589.pdf)在討論/ 4-14頁的示例4-15。我創建了一個類似於這個例子的東西,它運行良好。然後我開始修改它以獲取下面的代碼,並將GlassFish引入該過程,現在我得到該錯誤。
這裏是我的Java代碼:
public List<Report> GetReports(String var1, String var1, String var3) throws Exception {
Connection conn;
CallableStatement cs;
ResultSet rset;
String out1;
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("jdbc/myPool");
conn = ds.getConnection();
cs = conn.prepareCall("{call my_proc (?,?,?,?,?)}");
cs.setString(1, var1);
cs.setString(2, var2);
cs.setString(3, var3);
cs.registerOutParameter(4, Types.VARCHAR);
cs.registerOutParameter(5, OracleTypes.CURSOR);
cs.execute();
out1 = cs.getString(4);
List<Report> userReports = new ArrayList<Report>();
rset = ((OracleCallableStatement)cs).getCursor(5);
while (rset.next()) {
Report report = new Report();
report.col1 = rset.getString("myCol1");
report.col2 = rset.getString("myCol2");
userReports.add(report);
}
if (rset != null) {
try { rset.close(); } catch (Exception ex) {}
rset = null;
}
if (conn != null) {
try { conn.close(); } catch (Exception ex) {}
conn = null;
}
return userReports;
}
我們可以假設的背景下已經綁定到Oracle數據源?如果是這樣,當你查找的上下文,而不是(數據源),使用(OracleDataSource) – Sean 2012-03-09 04:36:59