简体   繁体   English

Tomcat和Hibernate:HibernateException:无法确定要使用的适当数据源

[英]Tomcat and Hibernate: HibernateException: Unable to determine appropriate DataSource to use

I'm trying to configure Hibernate to use Tomcat 7's connection pool via persistence.xml. 我正在尝试将Hibernate配置为通过persistence.xml使用Tomcat 7的连接池。 This failing due to a HibernateException because DatasourceConnectionProviderImpl is failing to instantiate the datasource. 由于HibernateException导致此失败,因为DatasourceConnectionProviderImpl无法实例化数据源。

context.xml: context.xml:

<Context>
    <Resource name="jdbc/postgresql"
              type="javax.sql.Datasource"
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql:sheets"
              username="sheets"
              password="sheets"/>
</Context>

persistence.xml: persistence.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    <persistence-unit name="Hibernate">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>java:comp/env/jdbc/postgresql</jta-data-source>
        <properties>
            <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/postgresql"/>
        </properties>
    </persistence-unit>
</persistence>

Stack trace: 堆栈跟踪:

javax.persistence.PersistenceException: Unable to build entity manager factory
        at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:83)
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
        at com.google.inject.persist.jpa.JpaPersistService.start(JpaPersistService.java:94)
        at com.google.inject.persist.PersistFilter.init(PersistFilter.java:77)
        at com.google.inject.servlet.FilterDefinition.init(FilterDefinition.java:114)
        at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:98)
        at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)
        at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4797)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5473)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.HibernateException: Unable to determine appropriate DataSource to use
        at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:119)
        at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
        at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)
        at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)
        at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
        at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
        at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)
        ... 24 more

I'm sure I've misconfigured something but I'm not sure what. 我确定我配置错误,但是不确定。

The cause of this problem was a circular dependency when using Guice dependency injection. 此问题的原因是在使用Guice依赖项注入时出现了循环依赖项。 A module had a dependency on the servlet context in order to contruct the DataSource, but GuiceServletContextListener constructs the injector before the context is available. 一个模块依赖于servlet上下文来构造DataSource,但是GuiceServletContextListener在上下文可用之前构造注入器。 See https://github.com/google/guice/issues/603 for more information and a workaround. 有关更多信息和解决方法,请参见https://github.com/google/guice/issues/603

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Hibernate 5,Tomcat 8中配置数据源 - Datasource configuring in Hibernate 5, Tomcat 8 org / hibernate / HibernateException:不支持的major.minor版本52.0(无法加载org.hibernate.HibernateException类) - org/hibernate/HibernateException : Unsupported major.minor version 52.0 (unable to load class org.hibernate.HibernateException) org.hibernate.HibernateException:无法找到当前的JTA事务 - org.hibernate.HibernateException: Unable to locate current JTA transaction org.hibernate.HibernateException:无法访问 lob 流 - org.hibernate.HibernateException: Unable to access lob stream org.hibernate.HibernateException:无法访问 lob stream Postgresql 9.6 - org.hibernate.HibernateException: Unable to access lob stream Postgresql 9.6 org.hibernate.HibernateException:无法实例化默认tuplizer - org.hibernate.HibernateException: Unable to instantiate default tuplizer Tomcat Web应用程序的DataSource,Spring和Hibernate - DataSource for Tomcat web app, Spring and Hibernate Tomcat 8-Maven + Spring + Hibernate-oracle数据源错误 - Tomcat 8 - Maven + Spring + Hibernate - Error with oracle datasource Tomcat 7.0 for Hibernate中的数据源JNDI配置 - Datasource JNDI configuration in Tomcat 7.0 for Hibernate 初始SessionFactory创建失败.org.hibernate.HibernateException:找不到数据源 - Initial SessionFactory creation failed.org.hibernate.HibernateException: Could not find datasource
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM