Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-2027

EE Default DataSource is not working

    XMLWordPrintable

Details

    Description

      The EE spec states that a default datasource must be supplied under: java:comp/DefaultDataSource, and if none is specified by the @Resource or persistence.xml, it must be assumed:

      EE 5.19
      
      The Java EE Platform requires that a Java EE Product Provider provide a database 
      in the operational environment (see Section EE.2.6, “Database”). The Java EE 
      Product Provider must also provide a preconfigured, default data source for use by 
      the application in accessing this database.
      The Java EE Product Provider must make the default data source accessible to 
      the application under the JNDI name java:comp/DefaultDataSource.
      The Application Component Provider or Deployer may explicitly bind a 
      DataSource resource reference to the default data source using the lookup element 
      of the Resource annotation or the lookup-name element of the resource-ref
      deployment descriptor element. For example,
      @Resource(lookup="java:comp/DefaultDataSource")
      DataSource myDS;
      In the absence of such a binding, the mapping of the reference will default to 
      the product's default data source.
      For example, the following will map to a preconfigured data source for the 
      product's default database:
      @Resource
      DataSource myDS;

      This, isn't working however:

      <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1.xsd">
      
         <persistence-unit name="default" transaction-type="JTA">
         </persistence-unit>
      
      </persistence>

      Results in:

      10:41:31,002 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 50) MSC000001: Failed to start service jboss.persistenceunit."jpa-standard.war#default": org.jboss.msc.service.StartException in service jboss.persistenceunit."jpa-standard.war#default": org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
      	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:134) [wildfly-jpa-8.0.0.Alpha4.jar:8.0.0.Alpha4]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
      	at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
      	at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.0.Final.jar:2.1.0.Final]
      Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
      	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:98)
      	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:66)
      	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:193)
      	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:88)
      	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
      	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
      	at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1844)
      	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1802)
      	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:844)
      	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:836)
      	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:368)
      	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:835)
      	at org.jboss.as.jpa.hibernate4.management.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
      	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:115) [wildfly-jpa-8.0.0.Alpha4.jar:8.0.0.Alpha4]
      	... 4 more
      
      10:41:31,010 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) JBAS014613: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"jpa-standard.war#default\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"jpa-standard.war#default\": org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
          Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set"}}
      

      Additionally, actually specifying the expected JDNI name of the default DS like this:

         <persistence-unit name="default" transaction-type="JTA">
            <jta-data-source>java:comp/DefaultDataSource</jta-data-source>
            <exclude-unlisted-classes>false</exclude-unlisted-classes>
         </persistence-unit>

      Results in this:

      JBAS014775:    New missing/unsatisfied dependencies:
            service jboss.naming.context.java.module.jpa-standard.jpa-standard.DefaultDataSource (missing) dependents: [service jboss.persistenceunit."jpa-standard.war#default".__FIRST_PHASE__] 
            service jboss.persistenceunit."jpa-standard.war#default".__FIRST_PHASE__ (missing) dependents: [service jboss.deployment.unit."jpa-standard.war".POST_MODULE] 
      

      Attachments

        Issue Links

          Activity

            People

              emartins@redhat.com Eduardo Martins
              lincolnthree Lincoln Baxter III (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: