-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: ClassCastException in GWT hosted mode only
PostPosted: Wed Nov 16, 2011 6:10 am 
Newbie

Joined: Wed Nov 16, 2011 6:01 am
Posts: 1
Hello and thanks for watching ;-)

Our problem/error is:

Quote:
javax.persistence.PersistenceException: [PersistenceUnit: PUname] Unable to build EntityManagerFactory
...
Caused by: org.hibernate.HibernateException: Could not instantiate dialect class
...
Caused by: java.lang.ClassCastException: org.hibernate.dialect.MySQLDialect cannot be cast to org.hibernate.dialect.Dialect
...

(see full stack trace at the bottom)

It occurs in a GWT based web application using the following technologies:
    Maven
    Hibernate EntityManager /JPA
    Guice
    GWT
    GWT-P
    GWT Maven Plugin
    ...

The fact to stress is that it does work in Tomcat.
Only in development mode aka hosted mode (with Jetty), using GWT Maven Plugin (with goal gwt:run), we get the ClassCastException. We were playing with Hibernate dependencies without luck.
The ClassCastException is thrown on startup of JPA before any service is actually used.
BTW: JPA is setup using Guice:
Code:
        install(new JpaPersistModule("PUname"));
        filter("/*").through(PersistFilter.class);


It may be worth mentioning that disabling the dialect setting (in persistence.xml) creates another ClassCastException also on JPA startup:
Quote:
javax.persistence.PersistenceException: [PersistenceUnit: dsmgmt] Unable to build EntityManagerFactory
...
Caused by: org.hibernate.HibernateException: Unable to instantiate specified TransactionFactory class [org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory]
...
Caused by: java.lang.ClassCastException: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory cannot be cast to org.hibernate.engine.transaction.spi.TransactionFactory
...


Why does it break in Jetty? What could be causing it or how can it be fixed?

File: META-INF/persistence.xml
Code:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
            <persistence-unit name="PUname" transaction-type="RESOURCE_LOCAL">
                        <provider>org.hibernate.ejb.HibernatePersistence</provider>
                        <class>our.test.class</class>
                        <properties>
                                   <property name="hibernate.connection.username" value="user"/>
                                   <property name="hibernate.connection.password" value="pass"/>
                                   <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
                                   <property name="hibernate.connection.url" value="jdbc:mysql://machine:3306/db"/>
                                   <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
                                   <property name="hibernate.hbm2ddl.auto" value="update"/>
                        </properties>
            </persistence-unit>
</persistence>


Our JARs in the webapp:
Code:
           445.288 antlr-2.7.7.jar
           150.774 antlr-runtime-3.1.3.jar
             4.467 aopalliance-1.0.jar
            57.963 classmate-0.5.4.jar
           575.389 commons-collections-3.2.1.jar
            52.543 commons-exec-1.1.jar
            59.590 commons-fileupload-1.2.2.jar
           163.151 commons-io-2.1.jar
           284.220 commons-lang-2.6.jar
           313.898 dom4j-1.6.1.jar
           131.929 dsmgmt-shared-0.1-SNAPSHOT.jar
         1.006.424 ehcache-core-2.4.3.jar
           710.492 guice-3.0.jar
            36.998 guice-assistedinject-3.0.jar
            27.633 guice-persist-3.0.jar
            65.012 guice-servlet-3.0.jar
         5.004.997 gwt-servlet-2.3.0.jar
            28.339 gwtp-dispatch-server-0.6.jar
            17.184 gwtp-dispatch-server-guice-0.6.jar
            30.402 gwtp-dispatch-shared-0.6.jar
            81.426 hibernate-commons-annotations-4.0.0.Final.jar
         4.347.499 hibernate-core-4.0.0.CR6.jar
           127.259 hibernate-ehcache-4.0.0.CR6.jar
           471.832 hibernate-entitymanager-4.0.0.CR6.jar
           102.661 hibernate-jpa-2.0-api-1.0.1.Final.jar
           366.592 hibernate-validator-4.2.0.Final.jar
            70.928 jandex-1.0.3.Final.jar
           644.148 javassist-3.12.1.GA.jar
             2.497 javax.inject-1.jar
            60.542 jboss-logging-3.1.0.CR1.jar
            11.209 jboss-transaction-api_1.1_spec-1.0.0.Final.jar
           859.016 jna-3.2.3.jar
           213.781 jsch-0.1.44-1.jar
           281.579 jsoup-1.6.1.jar
           481.535 log4j-1.2.16.jar
           789.885 mysql-connector-java-5.1.18.jar
         1.351.561 org.eclipse.jgit-1.0.0.201106090707-r.jar
           601.287 pd4ml-3.80b1.jar
           149.846 pd4ml-ss-css-3.80b1.jar
            25.962 slf4j-api-1.6.4.jar
             9.748 slf4j-log4j12-1.6.4.jar
           743.673 sqljet-1.0.4.jar
           172.023 stringtemplate-3.2.jar
         1.889.196 svnkit-1.3.5.jar
           251.371 trilead-ssh2-build213-svnkit-1.3-patch.jar
            47.433 validation-api-1.0.0.GA.jar
           109.318 xml-apis-1.0.b2.jar


The full stacktrace:
Code:
javax.persistence.PersistenceException: [PersistenceUnit: PUname] Unable to build EntityManagerFactory
       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:916)
       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:887)
       at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
       at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
       at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
       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.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)
       at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
       at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
       at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
       at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
       at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
       at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
       at org.mortbay.jetty.Server.doStart(Server.java:222)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672)
       at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
       at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
       at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
       at com.google.gwt.dev.DevMode.main(DevMode.java:311)
Caused by: org.hibernate.HibernateException: Could not instantiate dialect class
       at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:82)
       at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:64)
       at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:142)
       at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:81)
       at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:160)
       at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:133)
       at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71)
       at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2259)
       at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2255)
       at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724)
       at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:76)
       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:907)
       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:887)
       at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
       at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
       at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
       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.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)
       at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
       at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
       at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
       at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
       at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
       at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
       at org.mortbay.jetty.Server.doStart(Server.java:222)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672)
       at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
       at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
       at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
       at com.google.gwt.dev.DevMode.main(DevMode.java:311)
Caused by: java.lang.ClassCastException: org.hibernate.dialect.MySQLDialect cannot be cast to org.hibernate.dialect.Dialect
       at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:73)
       at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:64)
       at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:142)
       at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:81)
       at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:160)
       at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:133)
       at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71)
       at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2259)
       at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2255)
       at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724)
       at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:76)
       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:907)
       at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:887)
       at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
       at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
       at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
       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.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)
       at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
       at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
       at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
       at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
       at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
       at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
       at org.mortbay.jetty.Server.doStart(Server.java:222)
       at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
       at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672)
       at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
       at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
       at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
       at com.google.gwt.dev.DevMode.main(DevMode.java:311)

Best regards,
Alexander


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.