[jboss-jira] [JBoss JIRA] (WFLY-2027) EE Default DataSource is not working

Scott Marlow (JIRA) jira-events at lists.jboss.org
Mon Oct 21 11:42:02 EDT 2013


    [ https://issues.jboss.org/browse/WFLY-2027?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12823646#comment-12823646 ] 

Scott Marlow commented on WFLY-2027:
------------------------------------

Regarding forgetting about earlier EE releases, I disagree about that line of understanding the current EE 7 requirements.  We can't go back in time and re-invent what was intended by earlier EE/JPA spec versions (the JPA intent back in the EE 6 days was not for the container to use the EE product level default data source as there was no such thing).  To me, this part of the discussion only determines what is an EE 7 specification requirement for the (JPA) container.

I see no reason to keep this jira open either and no one has given a strong enough "EE compliance" counter argument for this jira to be open.

No one has of yet argued against WFLY-2212 being fixed, which is encouraging for those that want it.   :)
                
> EE Default DataSource is not working
> ------------------------------------
>
>                 Key: WFLY-2027
>                 URL: https://issues.jboss.org/browse/WFLY-2027
>             Project: WildFly
>          Issue Type: Bug
>          Components: ConfigAdmin, Domain Management, EE, JCA, JPA / Hibernate, Web Console
>    Affects Versions: 8.0.0.Alpha4
>            Reporter: Lincoln Baxter III
>            Assignee: Eduardo Martins
>             Fix For: 8.0.0.Beta1
>
>
> 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:
>  {code}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;{code}
> This, isn't working however:
> {code}
> <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>{code}
> Results in: 
> {code}
> 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"}}
> {code}
> Additionally, actually specifying the expected JDNI name of the default DS like this:
> {code}   <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>{code}
> Results in this:
> {code}
> 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] 
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the jboss-jira mailing list