2014-01-16 35 views
2

所以我想为我的应用程序创建一个JDBCRealm,而不是使用tomcat-users.xml中的用户。用postgres驱动创建JDBCRealm

香港专业教育学院改变了我的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元素。

,但由于某种原因,我不断收到一个NullPointerException当我开始我的tomcat, 原产于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。

任何想法,为什么它不会工作?这个驱动程序的任何已知的错误?或者它是我的元素?

谢谢!

+0

看起来像Tomcat正在向我传递'null' JDBC URL。 –

回答

2

答案很简单可怕:

connctionURL="jdbc:postgresql://localhost:5432/MyDataBase" 

点在参数名的错字。

由于您没有提供connectionURL参数,驱动程序无法正确初始化,因此是例外。

+0

相当。像这些问题往往会被标记为删除,这里我们有一个特色之一。 – Patrick