我有一個websphere 6.1集羣環境,它由兩個節點組成,每個節點有兩個appservers。讓我們把NodeA including Server1(2809) & Server2(2810)
,NodeB including Server3(2811) & Server4(2812)
。同時,我創建了一個JNDI local_db
的集羣範圍數據源。如何通過websphere ORB調用獲取數據庫連接?
現在,我想在Java客戶端通過從上述環境ORB調用數據庫的連接。 Java代碼的特定部分是這樣的:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL,"iiop://localhost:2809");
javax.sql.DataSource ds = (DataSource)initialContext.lookup("local_db");
Connection cn = ds.getConnection();
如果上面的Java客戶端的代碼被執行,將數據庫連接檢索所有應用程序服務器的四個連接池之間的請求後續負載均衡規則?另外,如果我的java客戶端成功地獲得了一個數據庫連接,然後運行一個大的SQL查詢並返回很大的結果,那麼對於內存空間的佔用情況,WAS應用服務器應該注意些什麼?只有服務器1由於上面使用的端口2809或返回數據庫連接的目標服務器?
順便說一句,如果我把該
PROVIDER_URL
2組服務器的成員,如iiop://localhost:2809, localhost:2810
,這是否意味着負載平衡或故障轉移?請幫忙解釋一下,並糾正我,如果我理解錯誤!
感謝
感謝您的回覆@Manglu正如你所說,無負載均衡這裏的數據庫連接retreiving。那麼對於EJB資源請求呢?如果我要查找該EJB資源,那麼會發生負載平衡嗎?看來WLM將會處理這個問題,但我不確定。 – wing2ofsky
WLM感知客戶端做到了這一點。 Java客戶端(和容器)是良好的WLM感知客戶端。 EJB調用返回的存根包含有關所有託管EJB的服務器的相關信息。當客戶端調用EJB時,它使用該信息爲您執行WLM。 – Manglu
查看本文,以更好地理解EJB調用如何在WebSphere環境中工作 - http://www.ibm.com/developerworks/websphere/techjournal/0807_pape/0807_pape.html – Manglu