0

I am trying to run hibernate-ogm 4.1.1.Final on WildFly 8.2.0.Final in standalone configuration. I've set up a Maven test project based on the archetype wildfly-javaee7-webapp-ear-archetype. This resulted in a project containing an EAR project with two sub deployments, ejb and web.

Following the instructions in the Hibernate OGM documentation, I downloaded and unzipped the pre-packaged modules for version 4.1.1.Final. I also added the jboss-deployment-structure.xml (to the EAR project's src/main/application/META-INF/ directory) and used "mongodb" as my dataprovider.

In the project, I added the Hibernate OGM BOM to my top-level pom (not the EAR pom, but the project pom; the other BOMs from WildFly are declared therein as well):

<dependency>
    <groupId>org.hibernate.ogm</groupId>
    <artifactId>hibernate-ogm-bom</artifactId>
    <version>4.1.1.Final</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Now since I would like to have my JPA entities in the EJB module, I added the Hibernate OGM dependency in the EJB project's pom, according to the getting started guide:

<dependency>
    <groupId>org.hibernate.ogm</groupId>
    <artifactId>hibernate-ogm-mongodb</artifactId>
</dependency>

The persistence.xml looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<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://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="primary">
        <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.transaction.jta.platform"
                value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
            <property name="hibernate.ogm.datastore.create_database" value="true"/>
            <property name="hibernate.ogm.datastore.provider" value="mongodb" />
            <property name="hibernate.ogm.datastore.database" value="testdb"/>
            <property name="hibernate.ogm.datastore.host" value="localhost"/>
            <property name="hibernate.ogm.datastore.port" value="27017"/>
        </properties>
    </persistence-unit>
</persistence>

Now having two entities marked by @Entity in the EJB project, I would like to access them from my web module, where JAX-RS endpoints are defined. An example borrowed from the demo projects looks like this:

@Entity
public class Dog {
   @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "dog")
   @TableGenerator(
      name = "dog",
      table = "sequences",
      pkColumnName = "key",
      pkColumnValue = "dog",
      valueColumnName = "seed"
   )
   public Long getId() { return id; }
   public void setId(Long id) { this.id = id; }
   private Long id;

   public String getName() { return name; }
   public void setName(String name) { this.name = name; }
   private String name;

   @ManyToOne
   public Breed getBreed() { return breed; }
   public void setBreed(Breed breed) { this.breed = breed; }
   private Breed breed;
}

Deployment of the project using Maven goals clean package wildfly:deploy fails with

ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 52) MSC000001: Failed to start service jboss.persistenceunit."test-ear.ear/test-ejb.jar#primary": org.jboss.msc.service.StartException in service jboss.persistenceunit."test-ear.ear/test-ejb.jar#primary": org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.ogm.dialect.spi.GridDialect]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_75]
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:474)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_75]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_75]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.ogm.dialect.spi.GridDialect]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:261) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:225) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.ogm.dialect.impl.OgmDialectFactoryInitiator$OgmDialectFactory.<init>(OgmDialectFactoryInitiator.java:51) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.dialect.impl.OgmDialectFactoryInitiator.buildServiceInstance(OgmDialectFactoryInitiator.java:33) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.dialect.impl.OgmDialectFactoryInitiator.buildServiceInstance(OgmDialectFactoryInitiator.java:27) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.service.impl.OptionalServiceInitiator.initiateService(OptionalServiceInitiator.java:23) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:105) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:251) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:225) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:95) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.ogm.service.impl.OgmJdbcServicesInitiator$OgmJdbcServicesImpl.configure(OgmJdbcServicesInitiator.java:56) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.ogm.jpa.HibernateOgmPersistence.createContainerEntityManagerFactory(HibernateOgmPersistence.java:105) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:318) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$1100(PersistenceUnitServiceImpl.java:67) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:167) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    ... 8 more
Caused by: org.hibernate.HibernateException: OGM000011: Cannot instantiate GridDialect class [org.hibernate.ogm.datastore.mongodb.MongoDBDialect]
    at org.hibernate.ogm.dialect.impl.GridDialectInitiator$GridDialectInstantiator.newInstance(GridDialectInitiator.java:101) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.dialect.impl.GridDialectInitiator$GridDialectInstantiator.newInstance(GridDialectInitiator.java:58) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.util.configurationreader.impl.DefaultClassPropertyReaderContext.getDefaultValue(DefaultClassPropertyReaderContext.java:116) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.util.configurationreader.impl.DefaultClassPropertyReaderContext.getTypedValue(DefaultClassPropertyReaderContext.java:86) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.util.configurationreader.impl.PropertyReaderContextBase.getValue(PropertyReaderContextBase.java:90) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.util.configurationreader.impl.DefaultClassPropertyReaderContext.getValue(DefaultClassPropertyReaderContext.java:28) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.dialect.impl.GridDialectInitiator.initiateService(GridDialectInitiator.java:51) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.ogm.dialect.impl.GridDialectInitiator.initiateService(GridDialectInitiator.java:32) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:105) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:251) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    ... 34 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_75]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_75]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_75]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [rt.jar:1.7.0_75]
    at org.hibernate.ogm.dialect.impl.GridDialectInitiator$GridDialectInstantiator.newInstance(GridDialectInitiator.java:83) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    ... 43 more

While my Maven expertise is more than limited, I suppose this results from a faulty dependency configuration.

Even more confusing (at least to me): when I (re)move the jboss-deployment-structure.xml, the exception from above disappears and the project is properly deployed, but I then get the following errors:

ERROR [io.undertow.request] (default task-8) UT005023: Exception handling request to /test-web/rest/dog: org.jboss.resteasy.spi.UnhandledException: org.hibernate.HibernateException: OGM000024: Syntax error in query: [SELECT d FROM Dog d]
    [...]
Caused by: org.hibernate.HibernateException: OGM000024: Syntax error in query: [SELECT d FROM Dog d]
    at org.hibernate.ogm.query.impl.LegacyParserBridgeQueryTranslator.compile(LegacyParserBridgeQueryTranslator.java:52) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:131) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.engine.spi.SessionDelegatorBaseImpl.createQuery(SessionDelegatorBaseImpl.java:401) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.ogm.jpa.impl.OgmEntityManager.createQuery(OgmEntityManager.java:246) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    at org.jboss.as.jpa.container.AbstractEntityManager.createQuery(AbstractEntityManager.java:131) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
    [...]
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Dog is not mapped [SELECT d FROM Dog d]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
    at org.hibernate.ogm.query.impl.LegacyParserBridgeQueryTranslator.compile(LegacyParserBridgeQueryTranslator.java:49) [hibernate-ogm-core-4.1.1.Final.jar:4.1.1.Final]
    ... 60 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Dog is not mapped
    [...]   

I've left some parts of the stacktrace so you can see that the OGM module is indeed loaded.

So in the end, I'm left with two questions:

  • How to make my project use modules provided by WildFly? Without the deployment structure XML, the dependencies are just packaged into the EAR, but I would like to use the modules provided by the AS
  • How do I get Hibernate OGM running on WildFly in general?

This is probably just a minor thing, but I just don't see it. Any help is greatly appreciated!

simd
  • 83
  • 1
  • 6
  • Could you share the complete stack trace of the first exception (including causes)? – Gunnar Mar 02 '15 at 07:58
  • I've created [OGM-756](https://hibernate.atlassian.net/browse/OGM-756) for creating an integration test for using OGM via an EAR on WildFly and describing the set-up in the reference guide. Could you attach a test case showing the problem to that issue? – Gunnar Mar 02 '15 at 08:09
  • Thanks Gunnar, will do so asap. Meanwhile, I've edited my question and included the full stacktrace for the first setup. – simd Mar 02 '15 at 08:27
  • Any progress with this one? I got the same exception: http://stackoverflow.com/questions/31490482/cannot-deploy-hibernate-ogm-mongodb-app-to-wildfly – Royi Freifeld Jul 18 '15 at 21:11

0 Answers0