Spring не может найти настроенный источник данных jdbc - PullRequest
1 голос
/ 15 ноября 2010

Я развернул свое приложение на tomcat 5.5, и IDE затмевает с помощью плагина myeclipse.при попытке запустить сервер Tomcat появляется следующая ошибка:

ОШИБКА - ContextLoader.initWebApplicationContext (219) |Сбой инициализации контекста org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'dataSource', определенным в ресурсе ServletContext [/WEB-INF/xaconfig/daoJPAConfig.xml]: сбой вызова метода init;вложенное исключение - javax.naming.NameNotFoundException: имя java: comp не привязано в этом контексте в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactsp.rag.prime.rag..AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:519) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:456) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.Java: 291) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support..beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190) в org.springframework.beans.factory.support.DefaultListableBeanFactory.org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:272) по адресу org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:19xt.trafContextLoaderListener.java:47) в org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:3669) в org.apache.catalina.core.StandardContext.start (StandardContext.java:4104) в org.apache.cat.core.ContainerBase.start (ContainerBase.java:1012) в org.apache.catalina.core.StandardHost.start (StandardHost.java:718) в org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1012) в org.apache.catalina.core.StandardEngine.start (StandardEngine.java:442) в org.apache.catalina.core.StandardService.start (StandardService.java:450) в org.apache.catalina.core.StandardServer.start (StandardServer.java:683) в org.apache.catalina.startup.Catalina.start (Catalina.java:537) в sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.remphodN в sun.remplindN.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:59apache.cat. cat. catBootstrap.start (Bootstrap.java:271) в org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:409) Причина: javax.naming.NameNotFoundException: Имя java: comp не связано в этом контексте в орг..apache.naming.NamingContext.lookup (NamingContext.java:778) в org.apache.naming.NamingContext.lookup (NamingContext.java:161) в javax.naming.InitialContext.lookup (InitialCont).ext.java:392) в org.springframework.jndi.JndiTemplate $ 1.doInContext (JndiTemplate.java:154) в org.springframework.jndi.JndiTemplate.execute (JndiTemplate.java:87) в org.spring.raj.поиск (JndiTemplate.java:152) в org.springframework.jndi.JndiTemplate.lookup (JndiTemplate.java:178)по адресу org.springframework.jndi.JndiLocatorSupport.lookup (JndiLocatorSupport.java:95) по адресу org.springframework.jndi.JndiObjectLocator.lookup (JndiObjectLocator.jwork:10.jpg) в org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet (JndiObjectFactoryBean.java:187) в org.springframework.beans.factory.support. АбстракцияAbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1409) ... еще 27

Я настроил источник данных в Apache Software Foundation \ Tomcat 5.5 \ conf как:

  <GlobalNamingResources>
    <Environment
      name="simpleValue"
      type="java.lang.Integer"
      value="30"/>
    <Resource
      name="jdbc/Paymentsdb"
      type="javax.sql.DataSource"
      maxActive="20"
      maxIdle="10"
      username="root"
      maxWait="20000"
      validationQuery="SELECT=1"
      driverClassName="com.mysql.jdbc.Driver"
      password="root"
      url="jdbc\:mysql\://devserver\:3306/payhub"/>
    <Resource
      auth="Container"
      description="User database that can be updated and saved"
      name="UserDatabase"
      type="org.apache.catalina.UserDatabase"
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
      pathname="conf/tomcat-users.xml"/>
  </GlobalNamingResources>

ия добавил страницу Apache Software Foundation \ Tomcat 5.5 \ conf \ context.xml и добавил свой webInf \ web.xml

 <resource-ref>
   <description>PaymentsDatabase</description>
   <res-ref-name>jdbc/Paymentsdb</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

Я использую Spring Framework, Hybernate + JPA.Пожалуйста, дайте мне знать, в чем может быть проблема?

1 Ответ

0 голосов
/ 15 ноября 2010

Я бы не рекомендовал помещать это в глобальный конфиг для Tomcat.Там нет никакой гарантии, что у вас будет доступ к нему.Лучше поместить его в META-INF / context.xml.

Вы не показали конфигурацию Spring для источника данных JNDI.Пожалуйста, включите это.

вложенным исключением является javax.naming.NameNotFoundException: Имя java: comp не связано в этом контексте

Разве это не должно быть java:comp/env?

...