Was ist dir unklar? Der Tunnel muss einfach auf den Zielhost und -port zeigen. JDBC muss dann auf den Host und Port zeigen, von welchem aus die Connection aufgebaut wurde (ausser es ist natürlich ein Reverse Tunnel).
String url = "jdbc:postgresql://serverxx.de/Datenbank";
Von welchem Host zu welchem machst du ein Tunnel? Von localhost zu irgendwas.de? Dann musst du natürlich statt [c]postgresql://serverxx.de[/c] einfach auf [c]postgresql://localhost[/c] verbinden.
Du willst SSH in deinem Programm verwenden? Also nicht einfach einen SSH-Tunnel verwenden?
ssh wird nicht funktionieren, denke ich.
// SSH Tunnel
Session session = null;
try {
final JSch jsch = new JSch();
session = jsch.getSession(ssh_user, ssh_server, 22);
final Hashtable config = new Hashtable();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
jsch.addIdentity("ssh/id_dsa");
session.connect();
int assigned_port = session.setPortForwardingL(lport, rhost, rport);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
// DB connection
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3366/db_name", "db_user", "db_pass");
// access database
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
} finally {
try {
if (con != null) con.close();
} catch (Exception ex) {/* NOP */}
}
session.disconnect();
Nein war sie nicht, das haben dir jetzt schon mehrere Leute gesagt.Die Frage war ganz klar formuliert!
Titel | Forum | Antworten | Datum | |
---|---|---|---|---|
T | Problem mit externen Datenbankzugriff über SSH Tunnel | Allgemeine Java-Themen | 4 |