2016-02-26 45 views
1

我正在使用IBM Websphere 8.5.5.8。我已經配置了一個數據源jdbc/Myds如何連接到Java的Websphere數據源?

我在本地編寫了一個java程序來連接到服務器並從表中獲取記錄。

Context initContext = new InitialContext(); 
ds = (DataSource)initContext.lookup("jdbc/Myds"); 
con=ds.getConnection(); 

但這代碼返回Oracle錯誤Invalid username/password

然後,我改變代碼:

Context initContext = new InitialContext(); 
    ds = (DataSource)initContext.lookup("jdbc/Myds"); 
    con=ds.getConnection("usename","password"); 

這正確連接到數據庫。 因此,我很難在具有不同用戶名和密碼的不同服務器上部署應用程序。

我該如何解決這個問題? 它是服務器中的配置問題還是我編碼中的問題?

回答

1

直接回答您的問題,恕我直言,這是一個架構決定,因此不是問題本身

,你可以遵循將創建一個配置文件,在那裏你會放置您usernamepassword,並且該應用程序將建立與數據庫的連接之前讀取的解決方案。

這是我很難部署在具有不同的用戶名和密碼

從我頭頂上不同的服務器上的應用程序,你可以通過兩種方式實現:

  1. 使用Java Build Tool,使用諸如profile之類的東西,將爲應用程序打包服務器的配置文件。問題在於,如果服務器之間確實存在差異username/password,則必須爲每臺服務器生成一個版本。

  2. 構建不包含配置文件的應用程序,並將後者直接放在服務器上。使用這種方法,你必須保證在應用程序的類路徑中可以訪問配置文件,以便讀取它。

3

最好的方法是在服務器上配置它。您可以使用WAS管理控制檯來設置具有驗證參數的數據源。 通過這種方式,您可以爲每臺服務器配置用戶/密碼。 請參閱documentation

然後,你的Java代碼應該是:

Context initContext = new InitialContext(); 
ds = (DataSource)initContext.lookup("jdbc/Myds"); 
con=ds.getConnection(); 
+0

而如果OP想改變它的應用服務器的未來? – aribeiro

+0

所有應用程序服務器允許用戶配置數據源和設置其驗證參數。如果更改了服務器,則需要配置新的數據源.. – nnunes10

2

如果您需要從通過JNDI名稱,推薦的方式做到這一點是在數據源配置定義Component Authentication Alias外部應用程序訪問它。如果您要創建位於服務器上的Web/EJB應用程序,那麼您應該使用資源引用和Container Authentication Alias。這些別名允許您分隔需要用於連接到各種資源(例如,用戶)的用戶特定數據。數據源,JMS)從您的應用程序。

這樣的配置機制在不同的形式存在於所有的應用服務器,並且不需要特定的應用程序代碼中任何東西。