在 Web 托管时将 Web 应用程序与 mysql 数据库连接

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

    登录您的 Jelastic 帐户。

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

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

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

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

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

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

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

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

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

    例如,在这里您可以看到我们的应用程序的代码,它连接到我们的 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();
        
    

    接下来,将项目的 .war 文件上传到 Jelastic Deployment Manager。例如,我们将使用 dbconnexample.war 文件(点击下载),其中包含适当的 jdbc-connector

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

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

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

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

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

【讨论】:

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

以上是关于在 Web 托管时将 Web 应用程序与 mysql 数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Azure Web 应用程序与 IIS 中本地托管的 WCF 服务进行通信?

用于早期 Web 应用的虚拟专用服务器托管与 Colo + 自己的服务器

从异步 Web 服务响应更新托管对象的最佳方法?

如何最好地在 Web 端托管 PowerPoint 幻灯片,并与原生 HTML 内容交错?

强大的自托管服务器的最佳选择:WCF 与 ASP.NET Web Api

我可以在没有 node.js 的情况下使用 Ionic 来构建托管 Web 应用程序吗?