【发布时间】:2012-12-13 07:39:33
【问题描述】:
我有一个针对具有两个 weblogic 托管服务器的集群的数据源,即 239.112.112.47:8001 和 239.112.112.48:9001
数据源的默认最大连接池容量设置为 15。
因此,我预计总共有 15*2=30 个连接。
但是,我的客户端代码在单个服务器 (239.112.112.47:8001) 上也仅获得 15 个连接,而不是在集群的两台服务器上。
下面是我的代码:
public static void main(String ar[])throws Exception
{
InitialContext ic=null;
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, 239.112.112.47:8001);
ic = new InitialContext(env);
}
catch(Exception e){
System.out.println("\n\n\t Unable To Get The InitialContext => "+e);
}
Connection con[]=new Connection[100];
try{
for(int i=0;i<100;i++)
{
DataSource ds=(DataSource)ic.lookup("MyDS"); //Enter your DataSource or MultidataSource JNDI name Here
con[i]=ds.getConnection();
System.out.println("\n\n\t GOT CONNECTION con["+i+"]: "+con[i]);
Thread.sleep(1000);
}
【问题讨论】:
-
您的意思是您的所有客户端请求都通过同一个托管服务器吗?在这种情况下,15 个连接的最大数量对我来说似乎没问题,您的问题不在于数据源,而在于集群设置。是的,您的假设是正确的,默认最大容量是应用于集群中每个服务器的设置。
-
是的,所有客户端请求都发送到单个服务器,即 239.112.112.47:8001。我该怎么做才能获得 30 个 JDBC 连接?我已经使用所有默认设置设置了集群,即我没有进行任何明确的更改。
-
您需要弄清楚为什么您的请求被重定向到单个服务器。一旦您能够将它们平衡到两台托管服务器,您的连接数可能会达到每台服务器 15 个。您的数据源设置似乎没问题。在我看来,您的问题与处理客户端请求(在集群上)的平衡有关,而不是与数据源本身有关。
-
您确定在客户端代码中即使我们指定了一台服务器,即 env.put(Context.PROVIDER_URL, 239.112.112.47:8001);理想情况下,客户端请求应该将集群发送到两个托管服务器?如果客户端代码不正确,请帮助确定将请求发送到集群中两个服务器的正确代码。
-
不幸的是,我对 WebLogic 集群没有经验。我建议你对这个主题提出另一个问题。
标签: weblogic datasource