来自Web应用程序的空连接。到生产服务器上的MySQL数据库

时间:2012-01-11 16:05:26

标签: java mysql

我有一个Web应用程序(java和MySQL),可以在我的开发设置中正常工作,但无法连接到生产服务器上的数据库。

context.xml文件是:

<!-- MySQL -->
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="0"
    driverName="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/xxxxxxxx?characterEncoding=UTF-8"
    connectionName="yyyyyyy" connectionPassword="zzzzzzz" userTable="users"
    userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles"
    roleNameCol="role_name" />


<!-- Database Pool -->
<Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
maxActive="25" maxIdle="5" maxWait="30000" removeAbandoned="true"
removeAbandonedTimeout="60" logAbandoned="true" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/xxxxxxx?autoReconnect=true&amp;zeroDateTimeBehavior=convertToNull"
username="yyyyyyy" password="zzzzzzz" />

获取连接的.java代码是:

public Connection getConnection(){
    Connection conn = null;
    try {
        Context initContext = new InitialContext();
        Context envContext = (Context) initContext.lookup("java:/comp/env");
        javax.sql.DataSource ds = (javax.sql.DataSource) envContext.lookup("jdbc/DB");
        conn = ds.getConnection();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
}

数据库中有数据,用户和密码存在,并且他们说它们在上下文文件中,但是连接(来自java代码)返回null。我试图查看日志文件,但我看到的那些文件不包含此应用程序生成的任何内容。

请注意,我不是生产服务器的管理员,所以我必须向sysadmin询问任何文件或数据。他是一个乐于助人的人,但只是简单地说“看看日志”(例如)就不会像更具体的东西那么好。

感谢您的帮助, 仪

1 个答案:

答案 0 :(得分:0)

看起来应该有错误输出。

conn变量最初设置为null,并且您的catch块捕获了错误。查看日志文件不会有帮助,因为您输出到控制台而不是输出到日志文件

e.printStackTrace();

设置log4j并使用log和log.error(e); 或在控制台中查找错误并在此处发布