OpenShift webapps mysql java连接

use*_*912 2 java mysql tomcat jdbc openshift

我在openshift上有一个JBoss EWS Tomcat 7 Java应用程序,安装了MySQL 5.5和PhpMyAdmin 4.0盒式磁带.我已在本地复制存储库,并删除了源文件夹.相反,我只是有一个已编译的Java应用程序,一个WAR文件,已被复制到webapps目录,git被推送到OpenShift服务器.

如果我有一些数据库,我怎么能在webapp编译的war文件中访问它.标准MySQL JDBC会起作用吗?根据我读过的一些帖子,OpenShift阻止访问数据库的外部请求,在这种情况下,webapp目录的war文件可能正在发出"外部请求".其中的来源是:https://www.openshift.com/forums/express/external-access-to-mysql(由着名的OpenShift开发人员回答).

我实际上在过去尝试过JDBC并且它不起作用,但这可能是由于代码不正确造成的.如果有人想写一些代码来说明如何做到这一点,我将不胜感激.如果你能测试它会更好:)

顺便说一下,在答案中请不要包括端口转发.我知道有效,我以前尝试过,端口转发工作.但它通常有点不安全,每次都必须从计算机启动.

use*_*912 12

我自己解决了这个问题,非常兴奋.虽然我自己没有得到帮助,但我希望有其他人来这个帖子并且能够让它运转起来!

所以我有一个Vaadin应用程序,它已被编译成WAR文件.我通过以下步骤将其部署到OpenShift服务器:

将已编译的webapp部署到OpenShift

  1. 在Web浏览器中打开OpenShift.登录Openshift.导航到相关应用程序.
  2. 获取位于磁带右侧的应用程序的ssh代码(它应该在屏幕右侧).使用Command-C或Ctrl-C复制该代码.
  3. 打开终端并输入 git clone ssh:\\xxxxxxxxxxxxxxxx...
  4. 如果你在Mac上,就像我一样,它应该创建一个项目目录Users/Username/Appname.在该目录中,删除源文件夹和pom.xml.获取已编译的WAR文件并将其复制到webapps目录中.
  5. 去终端.键入cd Appname,然后git add .,git commit -m "Deployment"最后git push.
  6. 您的应用程序现在应该完全运行 www.openshiftappname-domainname.rhcloud.com/warfilename

MySQL访问

  1. 安装MySQL和phpMyAdmin的磁带.这应该通过Add Cartidge您的openshift.com应用中心提供.
  2. 请注意您usernamepasswordOpenShift自动为您生成的MySQL数据库.转到www.openshiftappname-domainname.rhcloud.com/phpmyadmin,输入身份验证凭据.
  3. 在phpMyAdmin里面应该有服务器的IP地址; 它看起来像127.x.y.z:3306.x, y, and z可以是单个数字到三个数字的数字.
  4. 快速创建一个新database命名的任何你想要的.我将命名它test,然后在那里生成一个名为的新表testtable.
  5. 那么请记住部署的WAR应用程序?好吧,如果你使用MySQL,我打赌你已经将它包含在你的应用程序中.建立与MySQL的连接的基本步骤就是这样.

Java代码

转到编译到WAR文件中的打开IDE项目.如果它是Maven项目,请转到项目中的pom.xml,并添加依赖项:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.25</version>
 </dependency>
Run Code Online (Sandbox Code Playgroud)
  1. 然后使用以下代码.

String s = "jdbc:mysql://" + host + ":" + port + "/" + name",在哪个主机是server IP address,端口是,在我的情况下,3306名称是.database nametest

try {
    Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
     e.printStackTrace();
}

try {
    Connection con = DriverManager.getConnection(s, username, password);
}
catch (SQLException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

现在if (con == null)它没有用.如果不是null,它确实如此.

要进行测试,您应该重新编译WAR文件(在对其进行可视化测试之后).如果您需要进一步的帮助,请发表评论.当你4-6在第一部分中编译WAR文件和重做步骤时它应该工作:Deployment of compiled webapp to OpenShift.谢谢!