因此,我尝试为我的应用程序创建一个JDBCRealm,而不是使用tomcat-users.xml中的用户。
我已经更改了我的server.xml,如下所示:
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm.
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> -->
<Realm className="org.apache.catalina.realm.JDBCRealm"
debug="99"
driverName="org.postgresql.Driver"
connctionURL="jdbc:postgresql://localhost:5432/MyDataBase"
connectionName="xxxxxxxx"
ConnectionPassword="xxxxxxxx"
userTable="authUsers" userNameCol="name" userCredCol="password"
userRoleTable="authRole" roleNameCol="role" />
</Realm>所以- UserDatabaseRealm被注释掉了,我放入了我的JDBCRealm元素。
但出于某种原因,我在启动tomcat时总是收到一个nullPointerException,它源自postgres driver类:
org.apache.catalina.LifecycleException: Failed to start component [Realm[JDBCRealm]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:201)
at org.apache.catalina.realm.LockOutRealm.startInternal(LockOutRealm.java:120)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1109)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.startup.Catalina.start(Catalina.java:691)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
Caused by: java.lang.NullPointerException
at org.postgresql.Driver.connect(Driver.java:232)
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:710)
at org.apache.catalina.realm.JDBCRealm.startInternal(JDBCRealm.java:788)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 17 more我使用带有postgres 9.3的tomcat 7,用于驱动程序的jar是postgresql-9.3-1100.jdbc4.jar。
你知道为什么它不能工作吗?这个驱动程序有什么已知的bug吗?或者这是我的元素中的某些东西?
谢谢!
发布于 2014-05-15 14:33:07
答案非常简单:
connctionURL="jdbc:postgresql://localhost:5432/MyDataBase"找出参数名称中的拼写错误。
由于您没有提供connectionURL参数,因此驱动程序无法正确初始化,因此出现异常。
发布于 2019-03-25 18:38:49
<JDBCRealm"
debug="99" driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/authority?
user=test;password=test" userTable="users"
userNameCol="user_name"
userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" /> 有关更多解释,请参阅下面的链接...
https://tomcat.apache.org/tomcat-3.3-doc/JDBCRealm-howto.html
https://stackoverflow.com/questions/21166362
复制相似问题