我用struts做了一个页面。在本地主机(glassfish)上运行时,它工作正常。 但是,当我将 WAR 文件复制到远程服务器并从那里运行应用程序时,登录表单不起作用。这意味着在连接 mysql 数据库时出现问题。
我该如何解决这个问题?
代码片段:
Connection conn = null;
Statement stmt = null;
try{
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/SB");
conn = ds.getConnection();
stmt = conn.createStatement();
ResultSet rs = null;
if(stmt.execute("SELECT * FROM users WHERE username='"+loginform.getUsername()+"' AND geslo=MD5('"+loginform.getPassword()+"') LIMIT 1;"))
{
rs = stmt.getResultSet();
}
rs.next();
不幸的是,我无法从服务器控制台读取。我还应该做什么才能看到异常(远程日志记录?)?
感谢回复。
更新: - 本地和远程 GlassFish 3.0.1 都在运行。 - 我的工作环境是NetBeans 6.9.1。 - 本地部署只需在 NetBeans 中完成。我只是点击项目名称,然后点击发布。对于远程部署,管理员允许我访问 FTP 服务器,我只在其中复制 WAR 文件。 - MySQL 服务器位于其他地方。关键是,它可以从本地主机 Web 应用程序访问,但不能从同一个远程 Web 应用程序访问。
最佳答案
假设您在远程服务器上拥有管理员权限,您需要
- 验证数据源“jdbc/SB”是否存在。 (资源/JDBC/JDBC 资源)
- 验证数据源中的“池名”是否存在(资源/JDBC/连接池)
- 打开相应的连接池并单击“ping”按钮。
- 如果 ping 失败,请验证“其他属性”选项卡下的连接参数。
可能还有许多其他问题。您确实需要访问服务器日志,以便查看具体异常是什么。这不太可能是您的代码,更有可能是远程服务器缺少驱动程序依赖项或未正确配置(连接池数据源)
关于java - MySql 不适用于已部署的 Java Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413552/