0

我在网上冲浪了两天,寻找一种更好的方法来配置我要上传到的应用程序,AppFog以便它成功连接到云中的 mysql 数据库。

我已经创建了 mysql 服务,并且确实将它绑定到了应用程序。af tunnel mydatabase我还使用linux中的本地控制台( using )创建了表并在其上放置了一些数据

但我的应用程序似乎没有找到数据库。我的应用程序使用JDBC...我使用了数据库usernamepassworddatabasename从控制台(屏幕中的那些有趣的字符)给我,但它不起作用。所以我把我自己的凭据,仍然,没有成功......

我尝试url在控制台上给我的端口使用指向我的应用程序的那个,但仍然......实际上,我在控制台上显示了详细信息,以便在部署后连接到云中的数据库......但是我的应用程序似乎找不到我的数据库及其表....

我不知道出了什么问题...

请帮忙..

更多的:

这是我用来尝试这种连接的代码:

    try {
            String connectionURL = "jdbc:mysql://http://someapp.aws.af.cm:10000 /OnlinePassword";   

            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection(connectionURL, USER, PASS);
            statement = conn.createStatement();
        }
4

1 回答 1

3

使用名为 VCAP_SERVICES 的appfog环境变量自动检测您的 MySQL 数据库凭据和连接信息。您可以利用它来显示所有 JSON 格式的信息,并使用它将您的应用程序连接到 MySQL 数据库。你可以试试这个。

  • 首先创建一个 servlet 并使用上下文属性检索数据库连接,如下所示:

    public class DbInfoServlet extends HttpServlet 
    {
      public void doGet(HttpServletRequest request,HttpServletResponse response) 
          throws ServletException, IOException 
      {
        request.setAttribute("jsonContent", java.lang.System.getenv("VCAP_SERVICES"));
        request.getRequestDispatcher("/index.jsp").view.forward(request, response);
      }
    }
    
  • 然后创建一个 index.jsp 文件来显示您的 DB 连接信息,如下所示:

    <body>
      <p>
        <!-- Click here to display DB info -->
        <a href="/DbInfoServlet"></a>
        <!-- Display of your DB connection and credentials info is here. This will show in JSON document format
         -->
        <c:out value="${jsonContent}" />
      </p>
    </body>
    
  • 使用 JSON 文档内容中的主机名(即 IP)、端口、名称(即数据库名称)、用户名、密码参数来修改您的 JDBC 连接代码,如下所示:

    try {
          String connectionURL = "jdbc:mysql://hostname:3306/name";   
          Class.forName("com.mysql.jdbc.Driver");
          conn = DriverManager.getConnection(connectionURL, username, password);
          statement = conn.createStatement();
        }
    
  • 如果上述方法不起作用,只需确保您使用的是最新版本的 MySQL-connector-java jar 文件。

玩得开心!

于 2013-08-19T11:30:31.693 回答