所以我试图为我的应用程序创建一个 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 驱动程序类:
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
我将tomcat 7与postgres 9.3一起使用,我用于驱动程序的jar是postgresql-9.3-1100.jdbc4.jar。
任何想法为什么它不起作用?此驱动程序有任何已知的错误吗?或者它在我的元素中?
谢谢!