2014-03-13 86 views
1

的DB是:MSSQL 2008 R2 OS =的Windows Server 2008 R2的Tomcat 7.0.52 JNDI錯誤,同時部署WAR文件

全球資源server.xml中是:

<Resource name="data source name" auth="Container" type="javax.sql.DataSource" username="myuser" password="[email protected]" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://host:1433;databaseName=test1;selectMethod=cursor" maxWait="30000" maxActive="32" maxIdle="4" initialSize="4" timeBetweenEvictionRunsMillis="600000" minEvictableIdleTimeMilllis="600000" /> 
    </GlobalNamingResources> 

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
       resourceName="UserDatabase"/> 

是資源價值衝突還是還有其他問題?我也曾嘗試在資源名稱標籤中添加tomcat用戶文件,但也不起作用。 我也在context.xml文件中定義了數據源名稱。

錯誤日誌:

2014年3月12日下午五時19分53秒org.apache.catalina.realm.UserDatabaseRealm startInternal 重度:在關鍵UserDatabase javax.naming.NameNotFoundException異常仰視UserDatabase:名稱[UserDatabase]未在此上下文中綁定。無法找到[UserDatabase]。 at org.apache.naming.NamingContext.lookup(NamingContext.java:819) at org.apache.naming.NamingContext.lookup(NamingContext.java:167) at org.apache.catalina.realm.UserDatabaseRealm.startInternal( UserDatabaseRealm.java:253) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在org.apache.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:201) 的組織。 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:300) 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) 在org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在org.apache.catalina.startup.Catalina.start(Catalina.java:689) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(來源不明) 在陽光下。反射.DelegatingMethodAccessorImpl.invoke(未知源) at java.lang.reflect.Method.invoke(Unknown So urce) 在org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) 在org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)

2014年3月12日下午5:19:53 org.apache.catalina.realm.CombinedRealm startInternal SEVERE:未能啓動「org.apache.catalina.realm.UserDatabaseRealm/1.0」領域 org.apache.catalina.LifecycleException:無法啓動組件[ Realm [UserDatabaseRealm]] 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:300) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在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:731) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java: 150) 在org.apache.catalina.startup.Catalina.start(Catalina.java:689) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(未知來源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org。 apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) 引起:org.apache.cata lina.LifecycleException:在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)上的org.apache.catalina.realm.UserDatabaseRealm.startInternal(UserDatabaseRealm.java:262) 下的密鑰UserDatabase 下找不到UserDatabase組件) ... 17更多

+0

我覺得你的資源名稱有問題,應該只有一個詞 – ankit

+0

這實際上是一個詞,我故意在發佈問題時替換它。 – user3410549

+0

你能分享你的context.xml嗎?而且,如果您想使用MSSQL對用戶進行身份驗證,請使用[DataSource Database Realm](http://tomcat.apache.org/tomcat-7.0-doc/config/realm.html#DataSource_Database_Realm_-_org.apache.catalina.realm .DataSourceRealm)。 –

回答

1

您已損毀您的server.xml。如果您有指向「UserDatabase」的<Realm>,那麼您需要有一個名爲「UserDatabase」的<Resource>。這是默認配置:

<Resource name="UserDatabase" auth="Container" 
      type="org.apache.catalina.UserDatabase" 
      description="User database that can be updated and saved" 
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
      pathname="conf/tomcat-users.xml" /> 

如果你想用你的關係型數據庫爲您<Realm>,那麼你需要更改配置,使其指向相反,你需要使用DataSourceRealm代替。

+0

你的意思是應該工作嗎? – user3410549