我已经在网上浏览了两天,希望找到一种更好的方法来配置我上传到AppFog
的应用程序,以便它成功连接到云中的mysql数据库。
我创建了mysql服务,并将其绑定到应用程序。我还使用Linux中的本地控制台(使用af tunnel mydatabase
)创建了表并将一些数据放在它们上面
但我的应用似乎找不到数据库。我的应用程序使用JDBC
...我使用了从控制台(屏幕中那些有趣的字符)给我的数据库username
和password
以及databasename
而它没有工作。所以我把自己的凭据,但仍然没有成功......
我尝试使用url
指向我在控制台上给出的端口上的应用程序,但仍然......实际上,我在控制台上显示的详细信息中连接到数据库部署后的云...但我的应用程序似乎找不到我的数据库及其表....
我不知道出了什么问题......
请帮助..
MORE:
这是我用来尝试此连接的代码:
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();
}
答案 0 :(得分:3)
使用名为VCAP_SERVICES的 appfog 环境变量自动检测您的MySQL数据库凭据和连接信息。您可以利用此功能显示所有JSON格式的信息,并使用它将您的应用程序连接到MySQL数据库。你可以试试这个。
首先使用context属性创建一个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文件,以显示数据库连接信息,如下所示:
<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文件。
玩得开心!