JavaFX Android MySQL подключиться через SSH - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу подключить 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 ..

Любая помощь?

Если вам нужна дополнительная информация.Я готов.Пожалуйста, помогите мне, если можете ???

...