gpt4 book ai didi

Java应用程序无法连接到openshift中的mysql数据库

转载 作者:行者123 更新时间:2023-11-29 22:37:55 24 4
gpt4 key购买 nike

大家!

我正在使用 RedHat PaaS 的 OpenShift 免费帐户来托管我的 Java 应用程序。为了进行测试,我创建了一个应用程序,仅在index.jsp中获取两个用户信息(登录名和密码),然后搜索数据库并重定向到成功页面(消息“早上好/下午/晚上,$ {user.name”) }”)或失败页面(消息“您尚未注册”)。我还在 phpMyAdmin 中创建了一个名为 autenticacao 的数据库,其中有一个名为 usuario(用户)的表,这在 localhost 中运行良好。但在 openshift 中,我的 servlet 从 obter(String login, String senha) 方法接收到一个空的“usuario”(用户)对象,该对象应该获得一个选择查询的结果。我认为它不会创建数据库连接。我真的非常努力地让它工作,并且在论坛(也在 stackoverflow 中)看到了太多解决方案,但没有任何效果。

我正在使用一些设计模式,但我认为这不是问题。

这是我的 DatabaseLocator.java:`

    /*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
*
* @author Luiz
*/
public class DatabaseLocator {

private static DatabaseLocator instance = new DatabaseLocator();

public static DatabaseLocator getInstance() {
return instance;
}

private DatabaseLocator() {

}

public Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String user = System.getenv("OPENSHIFT_MYSQL_DB_USERNAME");
String password = System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD");
String url = System.getenv("OPENSHIFT_MYSQL_DB_URL");
String host = System.getenv("OPENSHIFT_MYSQL_DB_HOST");
String port = System.getenv("OPENSHIFT_MYSQL_DB_PORT");
Connection conn
= DriverManager.getConnection(host+port+"/autenticacao",user,password);
return conn;

}
}

当我尝试在 st = conn.createStatement(); 中创建连接时发生错误部分。

public Usuario obterUsuario(String login, String password) {
Usuario usuario = null;
Connection conn = null;
Statement st = null;
try {
conn = DatabaseLocator.getInstance().getConnection();
st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from usuario where login='" + login + "' and senha='" + password + "'");
rs.first();
usuario = instanciar(rs);
} catch (ClassNotFoundException cnf) {

} catch (SQLException ex) {
System.out.println(ex.getCause());
}

return usuario;
}

public static Usuario instanciar(ResultSet rs) throws SQLException, ClassNotFoundException {
Usuario usuario = new Usuario();
usuario.setLogin(rs.getString("login"));
usuario.setSenha(rs.getString("senha"));
//other rs fields that would be setted to user object
return user;
}

}

这段代码是葡萄牙语的,所以如果有任何词不明白,你可以问我。我还有一些其他的类(class),如果你想要的话我可以给你展示。

那么,我如何连接到我的数据库?你能帮助我吗?谢谢。

最佳答案

您还面临这个问题吗?如果是,则尝试使您的 openshift 应用程序不可扩展(如果设置为可扩展),反之亦然。我以前遇到过这个,只是记不太清楚了。就您而言,如果您不想更改应用程序的可扩展性,openshift 中的端口转发将会有所帮助。我用Jboss Dev Studio用于在 openshift 中创建我的 jboss 应用程序,以防您也需要 jboss。

关于Java应用程序无法连接到openshift中的mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29480321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com