我在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,但没有用,但这可能是由于代码不正确所致。如果有人想编写一些代码来说明如何实现,我将不胜感激。如果可以测试,那就更好了:)
顺便说一句,在答案中,请不要包括端口转发。我知道这可行,我之前已经尝试过,端口转发也可行。但这通常有点不安全,并且每次都必须从计算机启动。
我自己解决了这个问题,感到非常兴奋。尽管我自己没有得到帮助,但我希望其他人也可以使用此线程,并且能够使其正常工作!
因此,我有一个Vaadin应用程序,该应用程序已编译为WAR文件。我通过以下步骤将其部署到OpenShift服务器:
git clone ssh:\\xxxxxxxxxxxxxxxx...
Users/Username/Appname
pom.xml
webapps
cd Appname
git add .
git commit -m "Deployment"
git push
www.openshiftappname-domainname.rhcloud.com/warfilename
Add Cartidge
openshift.com
username
password
www.openshiftappname-domainname.rhcloud.com/phpmyadmin
127.x.y.z:3306
x, y, and z
database
test
testtable
转到编译为WAR文件的开放IDE项目。如果它是Maven项目,请转到项目内部的pom.xml,并添加依赖项:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency>
String s = "jdbc:mysql://" + host + ":" + port + "/" + name",其中host是server IP address,端口3306和名称是database name,在我的情况,test。
String s = "jdbc:mysql://" + host + ":" + port + "/" + name"
server IP address
3306
database name
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,那就可以了。
if (con == null)
null
要进行测试,您应该重新编译WAR文件(在进行某种形式的可视化测试之后)。如果您需要进一步的帮助,请发表评论。当您编译WAR文件并重4-6做第一部分中的步骤时,它应该可以工作Deployment of compiled webapp to OpenShift。谢谢!
4-6
Deployment of compiled webapp to OpenShift