Ошибка JNDI Tomcat 7.0.52 при развертывании файла WAR

1

БД: MSSQL 2008 R2 ОС = Windows Server 2008 R2

Глобальный ресурс в server.xml:

<Resource name="data source name" auth="Container"  type="javax.sql.DataSource" username="myuser" password="abc@xyz"  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.

Журнал ошибок:

12 марта 2014 г. 5:19:53 org.apache.catalina.realm.UserDatabaseRealm startInternal SEVERE: Исключение поиска UserDatabase под ключ UserDatabase javax.naming.NameNotFoundException: Имя [UserDatabase] не связано в этом контексте. Не удалось найти [UserDatabase]. в org.apache.naming.NamingContext.lookup(NamingContext.java:819) в org.apache.naming.NamingContext.lookup(NamingContext.java:167) в 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) на org.apache.catalina.realm. LockOutRealm.startInternal(LockOutRealm.java:120) в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) в org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1109) в 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) на 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 (Неизвестный источник) на sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) в org.apache.catalina.startup.Bootstrap.start (Неизвестный источник) Bootstrap.java:321) у org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)

12 марта 2014 г. 5:19:53 org.apache.catalina.realm.CombinedRealm startInternal SEVERE: не удалось запустить "org.apache.catalina.realm.UserDatabaseRealm/1.0" realm org.apache.catalina.LifecycleException: не удалось запустить компонент [Realm [UserDatabaseRealm]] в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) в org.apache.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:201) в org.apache. catalina.realm.LockOutRealm.startInternal(LockOutRealm.java:120) на org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) на org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java: 1109) на 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) на org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) на org.apache.catalina.core.StandardServer.startIntern al (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 (Неизвестный источник) на sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) на org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) в org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) Вызвано: org.apache.catalina.LifecycleException: компонент UserDatabase не найден в ключевой UserDatabase на org.apache.catalina.realm.UserDatabaseRealm.startInternal(UserDatabaseRealm.java:262) на org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... еще 17

Теги:
tomcat
sql-server-2008
jndi

1 ответ

1

Вы нарушили свой server.xml. Если у вас есть <Realm> указывающий на "UserDatabase", тогда вам нужно иметь <Resource> называемый "UserDatabase". Вот конфигурация по умолчанию:

<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
    Вы подразумеваете, что <Realm className = "org.apache.catalina.realm.DataSourceRealm" dataSourceName = "имя источника данных" /> должно работать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню