【问题标题】:Connect web application with mysql database while web hosting在 Web 托管时将 Web 应用程序与 mysql 数据库连接
【发布时间】:2017-01-10 02:27:51
【问题描述】:

我正在使用 jelastic.com 托管带有 mysql 数据库的 spring mvc 应用程序。为此,我在我的应用程序中指定了 mysql 数据库的用户名和密码。然后我上传了 war 文件。我的应用程序上传完美,但无法连接数据库。所以请帮我怎么做才能连接?

【问题讨论】:

  • 您需要提供有关您所做的工作、配置...以及出了什么问题的更多信息,例如错误信息
  • 这是我的试用帐户。我没有购买任何域名。首先,我想使用免费的网络托管进行托管,然后我将购买该域。会不会导致数据库远程连接出现问题?
  • @dream 你的问题不是由域引起的——你需要检查你的连接字符串。从您的日志中发布摘录也将有所帮助;这是how to view Jelastic logs

标签: java mysql spring jelastic


【解决方案1】:

MySQL 是一个非常流行的开源数据库,被世界各地的开发人员使用。在本说明中,我们将向您展示如何将托管在 Jelastic Cloud 中的 Java 应用程序连接到此数据库服务器。

请按照以下分步说明进行操作:

  1. 登录您的 Jelastic 帐户。

  1. 使用 Tomcat7MySQL 数据库服务器(可在 SQL 部分中找到)创建环境。

  1. 检查您的电子邮件收件箱 - 它应该包含来自 Jelastic 平台的消息,其中包含创建的 MySQL 服务器的管理凭据访问 URL、登录名和密码),例如:

  1. 切换回 dashboard 并单击您的 MySQL 节点的在浏览器中打开按钮。使用上述凭据登录到打开的管理面板并创建一个新数据库(例如,mysqlconnection)。

  1. 然后,在可扩展环境的节点列表中单击应用程序服务器(在我们的例子中为 Tomcat 7)旁边的 Config 按钮。

  1. 在打开的选项卡中,在主文件夹中创建一个新的 mydb.cfg 文件,并在其中添加以下 MySQL 连接字符串:

    host=jdbc:mysql://mysql{node_id}-{your_env_name}.{hoster_domain}/{db_name} 用户名={从 Jelastic 的电子邮件中获取} 密码={从 Jelastic 的电子邮件中获取} driver=com.mysql.jdbc.Driver

where {node_id} - 您希望获得访问权限的带有 MySQL 服务器的容器的 ID。可以在仪表板上看到(在我们的示例中为 277134)。

这样,本说明中使用的 mysql 环境所需的设置将如下图所示。

注意:要将 MySQL 数据库连接到您的项目,您显然可以在代码(应用程序)中提及所有必需的连接设置。在给定的示例中,我们将所有设置放入文件中,由我们的应用程序读取。

  1. 例如,在这里您可以看到我们的应用程序的代码,它连接到我们的 MySQL 节点。

DbManager.java:

package connection;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DbManager {

    private final static String createTable = "CREATE TABLE `example` (id INT, data VARCHAR(100))";

    public Connection createConnection() throws IOException, ClassNotFoundException, SQLException {

        Connection connection;

        Properties prop = new Properties();
        System.out.println("test");
        prop.load(new FileInputStream(System.getProperty("user.home") + "/mydb.cfg"));
        System.out.println("user.home: "+System.getProperty("user.home"));
        String host = prop.getProperty("host").toString();
        String username = prop.getProperty("username").toString();
        String password = prop.getProperty("password").toString();
        String driver = prop.getProperty("driver").toString();

        System.out.println("host: " + host + "\username: " + username + "\password: " + password + "\ndriver: " + driver);

        Class.forName(driver);
        System.out.println("--------------------------");
        System.out.println("DRIVER: " + driver);
        connection = DriverManager.getConnection(host, username, password);
        System.out.println("CONNECTION: " + connection);

        return connection;
    }

    public void runSqlStatement() {
        try {
            Statement statement = createConnection().createStatement();
            boolean rs = statement.execute(createTable);

        } catch (IOException ex) {
            Logger.getLogger(DbManager.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DbManager.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
  1. 接下来,将项目的 .war 文件上传到 Jelastic Deployment Manager。例如,我们将使用 dbconnexample.war 文件(点击下载),其中包含适当的 jdbc-connector

要将自己的项目连接到 MySQL 节点,需要将 jdbc-connector jar 文件上传到 webapps/{app_context}/WEB-部署应用程序的 Jelastic 环境的 INF/lib 文件夹。

点击dbconnexample链接下载我们项目的源码包。

  1. 将上传的 WAR 文件部署到环境中。

  1. 现在您可以单击应用服务器旁边的“在浏览器中打开”(在我们的示例中为 Tomcat 7)。您将看到一个新窗口,其中打开了在数据库中创建表“示例”按钮。点击此按钮。

  1. 为了确保一切正常,请单击 MySQL 节点旁边的在浏览器中打开,然后在打开的管理面板中导航到先前创建的 mysqlconnection 数据库。您会看到其中出现了新的示例表,这意味着 DB 已成功从已部署的 Java 应用程序中访问。

【讨论】:

  • 您指定了建议,我已经尝试过了,但它工作正常。实际上我已经使用xml文件在bean标签中设置连接路径、用户名和密码。在这种情况下,我的网站上传完美,但与 mysql 的连接不起作用。甚至在哪里以及如何获得与它相关的错误?
  • 在您的 Java 应用程序中,您可能会有 DB 连接代码,类似于以下代码: ` String URL = "jdbc:mysql://mysql{node_id}-{your-environment-name} .{hoster_domain}/{dbname}"; DriverManager.getConnection(URL, user_name,user_password); ` 您可以在our documentation page 阅读有关将数据库添加到Java 应用程序的更多信息。此外,您可以在DotCMS deploying 页面查看XML 连接到数据库的示例。跨度>
猜你喜欢
  • 2014-11-26
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多