2012-09-20 58 views
0

本地一切工作正常,但遠程Weblogic不是真的。下一個代碼無任何例外地運行。來自weblogic的數據庫連接

try 
    { 
    ods = new OracleDataSource(); 
    connectionString = XmlReader.getConnectionString(); 
    ods.setURL(connectionString); 
    } 
    catch (SQLException ex) 
    { 
     ex.printStackTrace(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

當我以前的ODS對象調用的getConnection(),它不引發任何異常

try 
    { 
     if (connection == null || connection.isClosed()) { 
      connection = ods.getConnection(); 
     } 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 

但最後的連接對象爲null 例如調用此

CallableStatement cstmt = connection.prepareCall(jobquery); 

在數據庫上,它看起來像應用程序創建了連接,但它沒有調用「jobquery」中指定的過程。什麼可能是錯的?

只要我的問題是:有沒有辦法不例外,從它創建一個OracleDataSource,然後得到一個空?

+0

你有沒有考慮打印出的「連接」,你得到它只是後的值,並重新只是你了Connection.prepareCall(...)語句之前?這可以幫助您瞭解您是否獲得了真正的連接,以及在嘗試準備呼叫時是否到位。 –

+0

我會試試看 – user1660008

回答

1

Nambaris answer可能會解決您的眼前問題。其他需要考慮的要點:

  1. 在WebLogic你真的應該使用內置datasources看看那些上漲JNDI名稱
  2. 你確定它不會拋出異常,或者你只是沒有看到它由於在stderr上打印出來?您應該使用日誌機制和異常傳播,而不是打印到輸出。

這些與您的問題沒有直接關係,只是您長期應該做的事情。

+0

抱歉,但Nambaris答案是不相關的我的問題犯了一個錯誤,我打電話的executeQuery在我的代碼。爲您的意見 1.感謝,我會嘗試 2.我有一個日誌機制,這是隻是一個例子 – user1660008

+0

我創建在WebLogic數據源和現在的工作。感謝您的回答 – user1660008

1

除非你錯過原來的問題一些代碼,看來你沒有執行的execute()。

例子:

callableStatement.executeQuery(); 

閱讀本教程CallableStatement

+0

它並不重要,因爲連接對象爲空,程序在conn.prepareCall() – user1660008

+0

好吧,你得到的連接= ods.getConnection失敗();但是你正在使用conn.prepareCall。將其更改爲連接.prepareCall看 – kosa

+0

在我的程序的正確,我只是在這個例子中 – user1660008

相關問題