簡體   English   中英

如何使用Java連接到Cloud Foundry MySQL數據庫連接?

[英]How to connect to a Cloud Foundry MySQL database connection in Java?

在Cloud Foundry上創建mysql作為服務並隧道到mysql數據庫,這為我提供了到mysql數據庫的連接字符串,我將該信息傳遞給了我的應用程序。 它可以在我的機器上工作,但是當我在Cloud Foundry服務器上部署該應用程序時,它在連接中給出了錯誤

這是我的連接代碼,告訴我需要進行哪些更改才能在Cloud Foundry上部署

public class DB {
    private static Connection connection = null;
    public static Connection getConnection() {
        String url = "jdbc:mysql://127.0.0.1:10100/db8dad2d02e114ef6bc9d24e68367e33e";
        try {

            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url,"uC0ag3NRJCT8c","p1nyZ38zadwfa");
            System.out.println("Connect success fully");
            return connection;

        } catch (Exception e) {
            System.out.println("Error");
            System.out.println(e);
            e.printStackTrace();

        }
        return null;

    }

}

jayesh的答案在技術上是正確的,但基本上,在Java應用程序內部(假定為非春季)處理檢索這些信息的最佳方法是使用cloudfoundry-runtime庫: https : //github.com/cloudfoundry/vcap- java / tree / master / cloudfoundry-runtime自述文件提供了用法示例。

為了完善起見,如果使用Spring,那么事情會更容易,甚至您甚至不需要做任何特別的事情

問題在這里:

jdbc:mysql://127.0.0.1:10100

在這種情況下,您要連接到127.0.0.1,它是一個本地主機,請嘗試提供您的雲服務器的實際IP。 然后它應該工作正常。

    try {

        String vcap_services = System.getenv("VCAP_SERVICES");
        String hostname = "";
        String dbname = "";
        String user = "";
        String password = "";
        String port = "";
                //for cloud config
        if (vcap_services != null && vcap_services.length() > 0) {
            JsonRootNode root = new JdomParser().parse(vcap_services);

            JsonNode mysqlNode = root.getNode("mysql-5.1");
            JsonNode credentials = mysqlNode.getNode(0).getNode(
                    "credentials");

            dbname = credentials.getStringValue("name");
            hostname = credentials.getStringValue("hostname");
            user = credentials.getStringValue("user");
            password = credentials.getStringValue("password");
            port = credentials.getNumberValue("port");

            String dbUrl = "jdbc:mysql://" + hostname + ":" + port + "/"
                    + dbname;
            System.out.println(dbUrl);
            System.out.println(user + "password " + password);

            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(dbUrl, user, password);
            return connection;
        } else {
//for local configuration
            Class.forName("com.mysql.jdbc.Driver");
            String url = jdbc:mysql://127.0.0.1:10100/db8dad2d02e114ef6bc9d24e68367e33e

            connection = DriverManager.getConnection(url, "user name",
                    "password");
            return connection;

        }

    } catch (Exception e) {

        e.printStackTrace();

    }

您正在使用來自vmc隧道的信息來嘗試連接。 這在雲上不起作用。 您需要執行jayesh顯示的操作,然后從Cloud Foundry環境中讀取連接憑據。 埃里克的答案更加完整:-)

我也有同樣的問題。 您必須注意“ 10100”是轉發到mysql遠程服務的端口。

您可以在本地使用它。數據庫連接指向轉發端口(101100),在本地部署程序。

但這在您將戰爭推向Cloud Foundry實例時不起作用-

一種解決方案是使用基於Spring的雲豆。 就我而言,我不想使用這種方法,所以我正在嘗試另一種解決方案...

我不知道一旦使用Cloud Foundry更改轉發端口並使用默認mysql端口(3360)為遠程連接創建的憑據(用戶,密碼,tc)是否可以建立連接

就我而言,我不想使用Spring Cloud Beans,因為生產應用程序不會部署到雲存儲中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM