在 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 帐户。
-
使用 Tomcat7 和 MySQL 数据库服务器(可在 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 端托管 PowerPoint 幻灯片,并与原生 HTML 内容交错?