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
- 在Web浏览器中打开OpenShift。 登录Openshift。 导航到相关应用程序。
- 获取该应用程序的ssh代码(它应该在屏幕右侧),位于墨盒右侧。 使用Command-C或Ctrl-C复制该代码。
- 打开终端并输入
git clone ssh:\\xxxxxxxxxxxxxxxx...
- 如果你在Mac上,就像我一样,它应该在
Users/Username/Appname
创建一个项目目录。 在该目录中,删除源文件夹和pom.xml
。 获取已编译的WAR文件并将其复制到webapps
目录中。 - 去终端。 键入
cd Appname
,然后键入git add .
,git commit -m "Deployment"
,最后是git push
。 - 您的应用程序现在应该可以在
www.openshiftappname-domainname.rhcloud.com/warfilename
完全运行
MySQL访问
- 安装MySQL和phpMyAdmin的磁带。 这应该可以通过您的
openshift.com
应用程序中心的Add Cartidge
获得。 - 请注意OpenShift自动为您生成的MySQL数据库的
username
和password
。 转到www.openshiftappname-domainname.rhcloud.com/phpmyadmin
,输入身份validation凭据。 - 在phpMyAdmin里面应该有服务器的IP地址; 它看起来像
127.xyz:3306
。x, y, and z
可以是单个数字到三个数字。 - 快速创建一个名为您想要的新
database
。 我将其命名为test
,然后在其中生成一个名为testtable
的新表。 - 那么请记住部署的WAR应用程序? 好吧,如果你使用MySQL,我打赌你已经将它包含在你的应用程序中。 建立与MySQL的连接的基本步骤就是这样。
Java代码
转到编译到WAR文件中的打开IDE项目。 如果它是Maven项目,请转到项目中的pom.xml,并添加依赖项:
mysql mysql-connector-java 5.1.25
- 然后使用以下代码。
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的墨盒