gpt4 book ai didi

java - 在 java simple JDBC 中主数据库关闭时切换到辅助 oracle 数据库

转载 作者:行者123 更新时间:2023-11-29 09:30:25 24 4
gpt4 key购买 nike

我正在尝试示例应用程序来演示 Oracle Data Guard,我编写了一个简单的 Java Servlet 来从 oracle 数据库中获取数据。

Servlet 看起来像这样:

package com;

import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class DisplayServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();



try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@10.10.220.4:1529:poc","poc","poc");

PreparedStatement ps=con.prepareStatement("select * from admin_emp");
//ps.setInt(1,roll);

out.print("<table width=50% border=1>");
out.print("<caption>Result:</caption>");
ResultSet rs=ps.executeQuery();

/* Printing column names */
ResultSetMetaData rsmd=rs.getMetaData();
int total=rsmd.getColumnCount();
out.print("<tr>");
for(int i=1;i<=total;i++)
{
out.print("<th>"+rsmd.getColumnName(i)+"</th>");

}
out.print("</tr>");

/* Printing result */
while(rs.next())
{
out.print("<tr><td>"+rs.getInt(1)+"</td><td>"+rs.getString(2)+"</td><td>"+rs.getString(3)+"</td><td>"+rs.getString(4)+"</td></tr>");

}
out.print("</table>");

}catch (Exception e2) {e2.printStackTrace();}

finally{out.close();}
}

}

所以我的问题是当这个数据库失败时我应该自动连接到另一台主机上的其他数据库,然后再抛出超时异常。

最佳答案

这通常通过 tnsnames.ora 文件处理。所以不需要写任何代码。即使是瘦 JDBC 驱动程序也支持 tnsnames 查找。

  • 将 JVM 属性设置为指向 tnsnames.ora 文件
  • 请 DBA 为您提供 Data Guard 的连接字符串
  • 在您的代码中创建 DB 连接时使用 tnsnames 条目的名称而不是 host:port:sid

另一种选择是将 Oracle connect string 直接硬编码到您的代码中。

关于java - 在 java simple JDBC 中主数据库关闭时切换到辅助 oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com