通过本地数据源领域的 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 及更高版本中失败的主要内容,如果未能解决你的问题,请参考以下文章

Servlet3.0新特性

如何解决MySQL5.7安装后root用户只能服务器本地登录?

Servlet3中web重定向的方式

c++本地022领域,是标点,是16进制数

如何使用ODBC数据连接连接到本地SQL Server? (我得到“登录失败”)

Keycloak中新添加的领域管理员无法登录领域