通过本地数据源领域的 Servlet3 登录在 Tomcat 7.0.29 中有效,但在 7.0.54 及更高版本中失败
Posted
技术标签:
【中文标题】通过本地数据源领域的 Servlet3 登录在 Tomcat 7.0.29 中有效,但在 7.0.54 及更高版本中失败【英文标题】:Servlet3 login via local data source realm works in Tomcat 7.0.29, but fails in 7.0.54 & higher vesion 【发布时间】:2014-09-12 10:52:36 【问题描述】:我已经发布了 servlet3.0 登录并使用下面的代码
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
request.login(username, password);
并在 META-INF 文件夹中添加了一个 context.xml 文件并添加了这些东西
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/3c">
<Realm localDataSource="true" debug="99"
className="org.apache.catalina.realm.JDBCRealm" connectionName="hariom"
connectionPassword="password" connectionURL="jdbc:mysql://serverip:3306/ ccc" digest="md5" driverName="com.mysql.jdbc.Driver" roleNameCol="umul_role_name"
userCredCol="umul_password" userNameCol="umul_email_id"
userRoleTable="um_users_list" userTable="um_users_list" />
</Context>
这在我的本地计算机上运行良好,但是在生产服务器中部署相同的代码登录时即使没有任何异常 tomcat 日志文件也无法正常工作..任何人如何检查为什么登录不工作的问题?
这是 pom.xml 文件中的 servlet3 条目
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
编辑:
当我将项目部署到 apache-tomcat-7.0.29 中时,相同的 Servlet3 登录有效,但不适用于 apache-tomcat-7.0.54
EDIT2:-
也不适用于 apache-tomcat-8.0.9
【问题讨论】:
用提供的信息几乎不可能回答这个问题也没有任何异常的tomcat日志文件 我只是将 SOP 放入我的代码中,发现它显示javax.servlet.ServletException Login Failed
不超过这个......当我从 eclipse 登录工作运行项目时,还有一件事,但是在 tomcat 中部署时它抛出这个异常..即使我从javax.servlet-api-3.0.1.jar
替换了tomcat默认servlet.jar
@JigarJoshi 我用apache-tomcat-7.0.29
测试了应用程序的另一点,它在tomcat lib 文件夹中没有任何变化,现在相同的应用程序登录不适用于apache-tomcat-7.0.54
【参考方案1】:
我会比较您的 Tomcat 之间的配置文件和 jar 库:Eclipse 中的一个和您遇到问题的那个。
有可能是您要部署到的 Tomcat 错过了 MySql JDBC 库。
但无论如何,如果您扫描 Tomcat 的日志文件以查找任何异常(也包括导致的异常)会更容易。
【讨论】:
以上是关于通过本地数据源领域的 Servlet3 登录在 Tomcat 7.0.29 中有效,但在 7.0.54 及更高版本中失败的主要内容,如果未能解决你的问题,请参考以下文章
如何解决MySQL5.7安装后root用户只能服务器本地登录?