在java简单JDBC中,当主数据库关闭时,切换到辅助oracle数据库



我正在试用示例应用程序来演示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提供连接字符串
  • 在您的代码中创建数据库连接使用tnsnames项的名称,而不是host:port:sid

另一种选择是直接将Oracleconnect string硬编码到代码中。

超时前异常?

在一个单独的线程中计算时间,并在给定的时间将连接变量更改为2。服务器

最新更新