Я хочу подключить mysql database
, расположенный на хост-сервере (например, godaddy), используя технику ssh
(потому что она не разрешает прямое подключение) в проекте android javafx (используя javafxmobile-plugin).
Iscussious подключен к базе данных MySQL, используя SSH с запуском на моем настольном компьютере (окно).Но когда я запускаю его на Android, все застряло ....
В настоящее время моя кодировка ...
.java файл:
public static final Integer PORT = 53009;
public static final String DB_NAME = "";
public static final String DB_URL = "jdbc:mysql://localhost:" + PORT + "/" + DB_NAME;
public static final String USERNAME = "";
public static final String PASSWORD = "";
public static final String DRIVER = "com.mysql.cj.jdbc.Driver";
--------------------------------------------------------
Connection con = null;
Session session = null;
//Fields
String rHost = "";
String user = "";
String password = "";
int rPort = 3306;
public void getRootConnection() throws SQLException {
close();
try {
//Create the JSCH object
JSch jsch = new JSch();
//Get the session
session = jsch.getSession(user, rHost);
//Set the password
session.setPassword(password);
//To be able to connect to any host (this is just for testing!)
session.setConfig("StrictHostKeyChecking", "no");
//Connect the session
session.connect();
//Set port forward
session.setPortForwardingL(PORT, "localhost", rPort);
//Show message
System.out.println("Waiting for connections…");
//mysql database connectivity
Class.forName(DRIVER).newInstance();
con = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
System.out.println("Database connection established");
System.out.println("DONE");
} catch (ClassNotFoundException | JSchException | InstantiationException | IllegalAccessException ex) {
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void close() {
try {
if (con != null && !con.isClosed()) {
System.out.println("Closing Database Connection");
con.close();
}
if (session != null && session.isConnected()) {
System.out.println("Closing SSH Connection");
session.disconnect();
}
} catch (SQLException ex) {
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.16'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.maqboolsolutions.Main'
dependencies {
compile 'com.gluonhq:charm:5.0.2'
compile 'mysql:mysql-connector-java:8.0.13'
compile 'com.jcraft:jsch:0.1.54'
}
jfxmobile {
downConfig {
version = '3.8.6'
// Do not edit the line below. Use Gluon Mobile Settings in your project context menu instead
plugins
}
android {
manifest = 'src/android/AndroidManifest.xml'
javafxportsVersion = '8.60.11'
android {
manifest = 'src/android/AndroidManifest.xml'
packagingOptions {
exclude 'META-INF/INDEX.LIST'
}
dexOptions {
javaMaxHeapSize "4g"
}
}
}
}
Если вы хотите помочь мне и хотите проверить свои собственные, это ссылка на проект, расположенный на github mysql-ssh-android test project
Моя главная проблема заключается в том, что когда я запускаю его на Android, SSH соединение работает.также переадресованные порты работают.но когда я подключаю MySQL, используя localhost и перенаправленный порт, мое приложение неожиданно закрывается с ошибкой unresponsive
..
Любая помощь?
Если вам нужна дополнительная информация.Я готов.Пожалуйста, помогите мне, если можете ???