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服务器:
git clone ssh:\\xxxxxxxxxxxxxxxx...Users/Username/Appname.在该目录中,删除源文件夹和pom.xml.获取已编译的WAR文件并将其复制到webapps目录中.cd Appname,然后git add .,git commit -m "Deployment"最后git push.www.openshiftappname-domainname.rhcloud.com/warfilenameAdd Cartidge您的openshift.com应用中心提供.username和passwordOpenShift自动为您生成的MySQL数据库.转到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>
Run Code Online (Sandbox Code Playgroud)
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.谢谢!
| 归档时间: |
|
| 查看次数: |
7461 次 |
| 最近记录: |