OpenShift webapps mysql java连接

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

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

我实际上在过去尝试过JDBC并且它不起作用,但这可能是因为代码不正确。 如果有人想编写一些显示如何完成此操作的代码,我将不胜感激。 如果你能测试它会更好:)

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

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

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

Java代码

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

  mysql mysql-connector-java 5.1.25  
  1. 然后使用以下代码。

String s = "jdbc:mysql://" + host + ":" + port + "/" + name" ,其中host是server IP address ,端口是3306 ,name是database name ,在我的例子中, test

 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(); } 

现在if (con == null)它不起作用。 如果它不是null ,它确实如此。

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

尝试查看这个知识库,了解使用在OpenShift上使用java服务器卡式盒时可用的默认mysql / postgresql连接: https ://help.openshift.com/hc/en-us/articles/202399720-How-to-use -the-预配置-MySQLDS和- PostgreSQLDS数据来源-内式Java的墨盒