Java 如何使用防火墙限制将小程序连接到oracle数据库

Java 如何使用防火墙限制将小程序连接到oracle数据库,java,database,oracle,applet,Java,Database,Oracle,Applet,我创建了一个java小程序,需要连接到oracle数据库。出于安全原因,我的问题从中创建oracle数据库的服务器受到防火墙的保护,以防止与数据库的直接连接。我有数据库ip地址、数据库运行的端口和服务名称,但我不知道如何连接到该服务器以便访问数据库。这是我试图连接到数据库的示例源代码 String dbip="xx.xx.xx.xx"; String dbport="1523"; String serviceName="servicenamexample";

我创建了一个java小程序,需要连接到oracle数据库。出于安全原因,我的问题从中创建oracle数据库的服务器受到防火墙的保护,以防止与数据库的直接连接。我有数据库ip地址、数据库运行的端口和服务名称,但我不知道如何连接到该服务器以便访问数据库。这是我试图连接到数据库的示例源代码

String dbip="xx.xx.xx.xx";
        String dbport="1523";
        String serviceName="servicenamexample";
        try {
            url="jdbc:oracle:thin:@(description=(address_list="+
                     "(address=(protocol=tcp)(host="+dbip+")(port="+dbport+")))"+
                     "(source_route=yes)"+
                     "(connect_data=(INSTANCE_NAME="+serviceName+")))";
            password="mypass";
            username="myusername";
            OracleDataSource odbc=new OracleDataSource();
            odbc.setURL(url);
            odbc.setPassword(password);
            odbc.setUser(username);
            conn=odbc.getConnection();
            System.out.println("connection established !");

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
这就是我得到的错误

java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297)
    at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:221)

如果服务器有防火墙,您需要防火墙中的一条规则,该规则允许您连接它。如果您有ssh访问权限,您可以使用ssh进行端口转发,例如:ssh-L 1523:x.x.x:1523。。。然后使用本地主机和端口1523@Duffydake什么是ssh端口,我怎样才能输入我的url。@jmurillo我没有防火墙rule@NemugaM是一个协议,你不能在你的代码中直接使用它,我是说在你当前的代码中。如果您不知道什么是ssh,我猜您的服务器上没有ssh服务器,或者您没有访问它的权限。我的解决方案是,如果你有防火墙,你不能改变规则和ssh访问。