gpt4 book ai didi

java - Tomcat 上出现奇怪的 jdbcReam 异常

转载 作者:行者123 更新时间:2023-11-29 12:05:24 26 4
gpt4 key购买 nike

我有一个简单的 Java 单 servlet Web 应用程序,在我的本地主机上受 BASIC 身份验证限制。如果我使用默认的 UserDatabaseRealm,它工作正常。

我尝试使用 jdbcReaml - projectName/META-INF/context.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/projectName">
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.postgresql.Driver"
connectionURL="jdbc:postgresql://localhost/realm"
connectionName="****" connectionPassword="****"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="roles" roleNameCol="user_role" />
</Context>

我的数据库充满了用户和他们的密码,我还为用户创建了角色。身份验证工作正常,但每次客户端填写他的身份验证数据时都会发生异常:

02-Jul-2014 14:42:37.406 SEVERE [http-nio-8080-exec-11] org.apache.catalina.realm.JDBCRealm.getPassword Exception performing authentication
org.postgresql.util.PSQLException: This statement has been closed.
at org.postgresql.jdbc2.AbstractJdbc2Statement.checkClosed(AbstractJdbc2Statement.java:2631)
at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1373)
at org.apache.catalina.realm.JDBCRealm.credentials(JDBCRealm.java:484)
at org.apache.catalina.realm.JDBCRealm.getPassword(JDBCRealm.java:525)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:387)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:334)
at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:111)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:578)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:78)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1033)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

我花了很多时间试图解决这个问题。

据我所知,我认为问题出现在 PostgresQL 连接期间。我的代码对数据库连接没有任何作用。我该如何解决这个问题?

我不想将 DataSourceRealm 与连接池一起使用,我只想解决我的问题并继续使用 tomcat。

感谢任何帮助。

最佳答案

此问题是 2014 年 3 月进行的重构引起的。最近已修复,应该在 tomcat 8.0.19 中。

关于java - Tomcat 上出现奇怪的 jdbcReam 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534286/

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