我要求我需要连接到每个目标的数据源。 如果datsource有两个目标,那么我需要逐个连接到两个目标。
我正在使用以下代码进行数据源连接。 需要知道如何连接到数据源的单个目标
public class ConnectWLSDataSource {
public static void main(String[] args) {
Connection conn;
Statement stmt;
ResultSet rs;
String str1;
try {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, “weblogic.jndi.WLInitialContextFactory”);
prop.put(Context.PROVIDER_URL, “t3://HOST_NAME:PORT_NUMBER”);
Context ctx = new InitialContext(prop);
Object obj = ctx.lookup(“DATA_SOURCE_NAME”); // java:comp/env/CPDS
System.out.println(“Data Source Found….”);
DataSource ds = (DataSource) obj;
conn = ds.getConnection();
System.out.println(“Data Source User Name::”+conn.getMetaData().getUserName());
stmt = conn.createStatement();
String query = “select 1 from dual”;
System.out.println(“Query ” + query);
rs = stmt.executeQuery(query);
if (rs != null) {
System.out.println(“Some Data Found in Query”);
} else {
System.out.println(“No Data Found in Query”);
}
ctx.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
您需要做的就是将PROVIDER_URL
更改为您想要的特定主机。例如,我们有4个服务器在集群中运行,如果我们想要循环连接,或者我们可以选择集群中的一个特定服务器,可以选择使用负载均衡器。
答案 1 :(得分:0)
在使用此代码时,我们遇到问题,并获得以下异常。如果满足100个请求,那么一个请求将失败,但以下异常除外。
javax.naming.CommunicationException [根本异常是java.net.ConnectException:t3://prod.abc.com:7114:无法访问目标;嵌套的异常是: java.net.SocketTimeoutException:读取超时;没有到目的地的可用路由器]。