You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Peter <pe...@dak.de> on 2006/11/08 16:40:24 UTC

org.hibernate.hql.ast.HqlToken

Michele La Porta <mi...@...> writes:

> 
> 
> You can try this:package org.hibernate.transaction;import 
java.util.Iterator;import java.util.Properties;import java.util.Set;import 
javax.transaction.TransactionManager;import 
org.apache.geronimo.gbean.AbstractName
> ;import org.apache.geronimo.gbean.AbstractNameQuery;import 
org.apache.geronimo.kernel.Kernel;import 
org.apache.geronimo.kernel.KernelRegistry;import 
org.apache.geronimo.kernel.proxy.ProxyManager;import 
> org.apache.geronimo.transaction.context.TransactionContextManager;import 
org.hibernate.HibernateException;public class GeronimoTransactionManagerLookup 
implements        TransactionManagerLookup {    // geronimo 
> 1.1 object name    public static final String TransactionMgrGBeanName 
= "geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-server/1.1-
SNAPSHOT/car,J2EEServer=geronimo,j2eeType=TransactionContextManager,name=Transa
ctionContextManager";
>     public static final String UserTransactionName 
= "java:comp/UserTransaction";    public TransactionManager 
getTransactionManager(Properties props) throws HibernateException {        try 
{
>             //TODO props with geronimo kernel name            Kernel kernel 
= KernelRegistry.getKernel("geronimo");            ProxyManager proxyManager = 
kernel.getProxyManager();            AbstractNameQuery query = new 
AbstractNameQuery(
> TransactionContextManager.class.getName());            Set names = 
kernel.listGBeans(query);            AbstractName name = null;            for 
(Iterator it = names.iterator(); it.hasNext();)                name = 
(AbstractName) 
> it.next();            return ((TransactionContextManager) 
proxyManager.createProxy(name,                    
TransactionContextManager.class)).getTransactionManager();        } catch 
(Exception e) {            
> e.printStackTrace();            throw new HibernateException("Geronimo 
Transaction Manager Lookup Failed", e);        }    }    public String 
getUserTransactionName() {        return UserTransactionName;
>     }}Remember to set this hibernate.properties        <property 
name="hibernateProperties">                <props>                    <prop 
key="hibernate.dialect
> ">org.hibernate.dialect.SQLServerDialect</prop>                    <prop 
key="hibernate.show_sql">false</prop>                    <prop 
key="hibernate.cglib.use_reflection_optimizer
> ">true</prop>                    <prop 
key="hibernate.transaction.flush_before_completion">true</prop>                
    <prop key="hibernate.transaction.auto_close_session
> ">true</prop>                           <prop 
key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransact
ionFactory</prop>                                    <prop key="
> 
hibernate.transaction.manager_lookup_class">org.hibernate.transaction.GeronimoT
ransactionManagerLookup</prop>                     <prop 
key="hibernate.current_session_context_class">thread</prop>
>                     <!-- <prop 
key="hibernate.current_session_context_class">jta</prop>-->                    
<prop key="jta.UserTransaction">java:comp/UserTransaction</prop>
>                                         <prop 
key="hibernate.cache.use_query_cache">true</prop>                    <prop 
key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider
> </prop>                    <prop 
key="hibernate.cache.provider_configuration_file_resource_path">src/main/resour
ces/ehcache-hibernate3.xml</prop>                                </props>
>         </property>
> 
> On 11/8/06, Peter <pe...@dak.de> wrote:
> A suggested solution for Geronimo 1.0 is available 
athttp://cwiki.apache.org/confluence/display/GMOxDOC10/JBoss+to+Geronimo+-
+Hibernate+Migration. Unfortunately this does not work for Geronimo 
> 1.1.What I have tried is:public class 
GeronimoTransactionManagerLookup    implements TransactionManagerLookup{   
public static final String TransactionMgrGBeanName=                        "
> geronimo.server:J2EEApplication=null," 
+                        "J2EEModule=geronimo/j2ee-server/1.1.1/car," 
+                        "J2EEServer=geronimo,j2eeType=TransactionManager," +
>                         "name=TransactionManager";   ...but I still getDEBUG 
[SessionFactoryObjectFactory] initializing 
classSessionFactoryObjectFactoryDEBUG [SessionFactoryObjectFactory] registered:
> 8b81890a0ec727bb010ec727c8de0000 (unnamed)
INFO  [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI 
nameconfiguredDEBUG [SessionFactoryImpl] instantiated session factoryDEBUG 
[SessionFactoryImpl] obtaining JTA TransactionManager
> ERROR [PersistenceManager] Geronimo Transaction Manager Lookup 
Failedorg.hibernate.HibernateException: Geronimo Transaction Manager Lookup 
Failed        atorg.hibernate.transaction.GeronimoTransactionManagerLookup.getT
ransactionManage
> r(GeronimoTransactionManagerLookup.java:29)        at 
org.hibernate.impl.SessionFactoryImpl.<init>
(SessionFactoryImpl.java:301)        at 
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java
> :1154)How should this GBeanName be set? Or do I need to change something 
else?
> 
> 
> 
> 

Hi Michele:

Now the lookup works but later on I have the following exception, although 
org.hibernate.hql.ast.HqlToken is present in hibernate3.jar:

INFO  [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name 
configured
DEBUG [SessionFactoryImpl] instantiated session factory
DEBUG [SessionFactoryImpl] obtaining JTA TransactionManager
INFO  [SessionFactoryImpl] Checking 7 named HQL queries
DEBUG [SessionFactoryImpl] Checking named query: findGueltigeAnwendungsgruppen
DEBUG [SessionFactoryImpl] Checking named query: findGueltigeFunktionen
DEBUG [SessionFactoryImpl] Checking named query: 
findGueltigeMitarbeiterAnwendungsgruppen
DEBUG [SessionFactoryImpl] Checking named query: getConfigValue
DEBUG [SessionFactoryImpl] Checking named query: findGueltigenMitarbeiter
DEBUG [SessionFactoryImpl] Checking named query: findGueltigeChildFunktionen
DEBUG [SessionFactoryImpl] Checking named query: findGueltigeBerechtigungen
INFO  [SessionFactoryImpl] Checking 0 named SQL queries
ERROR [SessionFactoryImpl] Error in named query: findGueltigeAnwendungsgruppen
org.hibernate.QueryException: ClassNotFoundException: 
org.hibernate.hql.ast.HqlToken [
		
			SELECT anwgrup from 
de.dak.rahmenwerk.application.berechtigung.Anwendungsgruppe anwgrup WHERE 
anwgrup.Anwendung.ANW_SL = :anwendungsKuerzel
				and ((:heute between anwgrup.GUELTIG_AB and 
anwgrup.GUELTIG_BIS) or (anwgrup.GUELTIG_AB is null and anwgrup.GUELTIG_BIS 
>= :heute) or (anwgrup.GUELTIG_AB <= :heute and anwgrup.GUELTIG_BIS is null) 
or (anwgrup.GUELTIG_AB is null and anwgrup.GUELTIG_BIS is null) )
		]
	at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:57)
	at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
	at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:31)
	at antlr.CharScanner.<init>(CharScanner.java:51)
	at antlr.CharScanner.<init>(CharScanner.java:60)
	at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:56)
	at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:53)
	at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:50)
	at org.hibernate.hql.ast.HqlLexer.<init>(HqlLexer.java:26)
	at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:44)
	at org.hibernate.hql.ast.QueryTranslatorImpl.parse
(QueryTranslatorImpl.java:232)
	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile
(QueryTranslatorImpl.java:155)
	at org.hibernate.hql.ast.QueryTranslatorImpl.compile
(QueryTranslatorImpl.java:105)
	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:74)
	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:53)
	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan
(QueryPlanCache.java:71)
	at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries
(SessionFactoryImpl.java:363)
	at org.hibernate.impl.SessionFactoryImpl.<init>
(SessionFactoryImpl.java:327)
	at org.hibernate.cfg.Configuration.buildSessionFactory
(Configuration.java:1154)



Re: org.hibernate.hql.ast.HqlToken

Posted by Michele La Porta <mi...@gmail.com>.
In your plan.xml try to filter the hibernate.jar in this way

<?xml version="1.0" encoding="UTF-8"?>
<web:web-app
    xmlns:deployment="http://geronimo.apache.org/xml/ns/deployment-1.1"
    xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1"
    xmlns:security="http://geronimo.apache.org/xml/ns/security-1.1"
    xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://geronimo.apache.org/xml/ns/j2ee/web-1.1
http://geronimo.apache.org/schemas-1.1/geronimo-web-1.1.xsd
http://geronimo.apache.org/xml/ns/naming-1.1
http://geronimo.apache.org/schemas-1.1/geronimo-naming-1.1.xsd
http://geronimo.apache.org/xml/ns/security-1.1
http://geronimo.apache.org/schemas-1.1/geronimo-security-1.1.xsd
http://geronimo.apache.org/xml/ns/deployment-1.1
http://geronimo.apache.org/schemas-1.1/geronimo-module-1.1.xsd ">

    .....
  <deployment:environment>
       <deployment:hidden-classes>
            <deployment:filter>org.springframework</deployment:filter>
            <deployment:filter>org.hibernate</deployment:filter>
        </deployment:hidden-classes>

    </deployment:environment>
    ....

</web:web-app>


On 11/8/06, Peter <pe...@dak.de> wrote:
>
> Michele La Porta <mi...@...> writes:
>
> >
> >
> > You can try this:package org.hibernate.transaction;import
> java.util.Iterator;import java.util.Properties;import java.util.Set;import
> javax.transaction.TransactionManager;import
> org.apache.geronimo.gbean.AbstractName
> > ;import org.apache.geronimo.gbean.AbstractNameQuery;import
> org.apache.geronimo.kernel.Kernel;import
> org.apache.geronimo.kernel.KernelRegistry;import
> org.apache.geronimo.kernel.proxy.ProxyManager;import
> > org.apache.geronimo.transaction.context.TransactionContextManager;import
> org.hibernate.HibernateException;public class
> GeronimoTransactionManagerLookup
> implements TransactionManagerLookup { // geronimo
> > 1.1 object name public static final String TransactionMgrGBeanName
> = "geronimo.server:J2EEApplication=null
> ,J2EEModule=geronimo/j2ee-server/1.1-
>
> SNAPSHOT/car,J2EEServer=geronimo,j2eeType=TransactionContextManager,name=Transa
> ctionContextManager";
> > public static final String UserTransactionName
> = "java:comp/UserTransaction"; public TransactionManager
> getTransactionManager(Properties props) throws HibernateException { try
> {
> > //TODO props with geronimo kernel name Kernel kernel
> = KernelRegistry.getKernel("geronimo"); ProxyManager proxyManager =
> kernel.getProxyManager(); AbstractNameQuery query = new
> AbstractNameQuery(
> > TransactionContextManager.class.getName()); Set names =
> kernel.listGBeans(query); AbstractName name = null; for
> (Iterator it = names.iterator(); it.hasNext();) name =
> (AbstractName)
> > it.next(); return ((TransactionContextManager)
> proxyManager.createProxy(name,
> TransactionContextManager.class)).getTransactionManager(); } catch
> (Exception e) {
> > e.printStackTrace(); throw new HibernateException("Geronimo
> Transaction Manager Lookup Failed", e); } } public String
> getUserTransactionName() { return UserTransactionName;
> > }}Remember to set this hibernate.properties <property
> name="hibernateProperties"> <props> <prop
> key="hibernate.dialect
> > ">org.hibernate.dialect.SQLServerDialect</prop> <prop
> key="hibernate.show_sql">false</prop> <prop
> key="hibernate.cglib.use_reflection_optimizer
> > ">true</prop> <prop
> key="hibernate.transaction.flush_before_completion">true</prop>
> <prop key="hibernate.transaction.auto_close_session
> > ">true</prop> <prop
> key="hibernate.transaction.factory_class">
> org.hibernate.transaction.JTATransact
> ionFactory</prop> <prop key="
> >
> hibernate.transaction.manager_lookup_class">
> org.hibernate.transaction.GeronimoT
> ransactionManagerLookup</prop> <prop
> key="hibernate.current_session_context_class">thread</prop>
> > <!-- <prop
> key="hibernate.current_session_context_class">jta</prop>-->
> <prop key="jta.UserTransaction">java:comp/UserTransaction</prop>
> > <prop
> key="hibernate.cache.use_query_cache">true</prop> <prop
> key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider
> > </prop> <prop
> key="hibernate.cache.provider_configuration_file_resource_path
> ">src/main/resour
> ces/ehcache-hibernate3.xml</prop> </props>
> > </property>
> >
> > On 11/8/06, Peter <pe...@dak.de> wrote:
> > A suggested solution for Geronimo 1.0 is available
> athttp://cwiki.apache.org/confluence/display/GMOxDOC10/JBoss+to+Geronimo+-
> +Hibernate+Migration. Unfortunately this does not work for Geronimo
> > 1.1.What I have tried is:public class
> GeronimoTransactionManagerLookupimplements TransactionManagerLookup{
> public static final String TransactionMgrGBeanName="
> > geronimo.server:J2EEApplication=null,"
> +"J2EEModule=geronimo/j2ee-server/1.1.1/car,"
> +"J2EEServer=geronimo,j2eeType=TransactionManager," +
> > "name=TransactionManager"; ...but I still getDEBUG
> [SessionFactoryObjectFactory] initializing
> classSessionFactoryObjectFactoryDEBUG [SessionFactoryObjectFactory]
> registered:
> > 8b81890a0ec727bb010ec727c8de0000 (unnamed)
> INFO[SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI
> nameconfiguredDEBUG [SessionFactoryImpl] instantiated session factoryDEBUG
> [SessionFactoryImpl] obtaining JTA TransactionManager
> > ERROR [PersistenceManager] Geronimo Transaction Manager Lookup
> Failedorg.hibernate.HibernateException: Geronimo Transaction Manager
> Lookup
> Failedatorg.hibernate.transaction.GeronimoTransactionManagerLookup.getT
> ransactionManage
> > r(GeronimoTransactionManagerLookup.java:29)at
> org.hibernate.impl.SessionFactoryImpl.<init>
> (SessionFactoryImpl.java:301)at
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java
> > :1154)How should this GBeanName be set? Or do I need to change something
> else?
> >
> >
> >
> >
>
> Hi Michele:
>
> Now the lookup works but later on I have the following exception, although
> org.hibernate.hql.ast.HqlToken is present in hibernate3.jar:
>
> INFO  [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI
> name
> configured
> DEBUG [SessionFactoryImpl] instantiated session factory
> DEBUG [SessionFactoryImpl] obtaining JTA TransactionManager
> INFO  [SessionFactoryImpl] Checking 7 named HQL queries
> DEBUG [SessionFactoryImpl] Checking named query:
> findGueltigeAnwendungsgruppen
> DEBUG [SessionFactoryImpl] Checking named query: findGueltigeFunktionen
> DEBUG [SessionFactoryImpl] Checking named query:
> findGueltigeMitarbeiterAnwendungsgruppen
> DEBUG [SessionFactoryImpl] Checking named query: getConfigValue
> DEBUG [SessionFactoryImpl] Checking named query: findGueltigenMitarbeiter
> DEBUG [SessionFactoryImpl] Checking named query:
> findGueltigeChildFunktionen
> DEBUG [SessionFactoryImpl] Checking named query:
> findGueltigeBerechtigungen
> INFO  [SessionFactoryImpl] Checking 0 named SQL queries
> ERROR [SessionFactoryImpl] Error in named query:
> findGueltigeAnwendungsgruppen
> org.hibernate.QueryException: ClassNotFoundException:
> org.hibernate.hql.ast.HqlToken [
>
>                         SELECT anwgrup from
> de.dak.rahmenwerk.application.berechtigung.Anwendungsgruppe anwgrup WHERE
> anwgrup.Anwendung.ANW_SL = :anwendungsKuerzel
>                                 and ((:heute between anwgrup.GUELTIG_ABand
> anwgrup.GUELTIG_BIS) or (anwgrup.GUELTIG_AB is null and
> anwgrup.GUELTIG_BIS
> >= :heute) or (anwgrup.GUELTIG_AB <= :heute and anwgrup.GUELTIG_BIS is
> null)
> or (anwgrup.GUELTIG_AB is null and anwgrup.GUELTIG_BIS is null) )
>                 ]
>         at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:57)
>         at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
>         at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(
> HqlLexer.java:31)
>         at antlr.CharScanner.<init>(CharScanner.java:51)
>         at antlr.CharScanner.<init>(CharScanner.java:60)
>         at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java
> :56)
>         at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java
> :53)
>         at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java
> :50)
>         at org.hibernate.hql.ast.HqlLexer.<init>(HqlLexer.java:26)
>         at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:44)
>         at org.hibernate.hql.ast.QueryTranslatorImpl.parse
> (QueryTranslatorImpl.java:232)
>         at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile
> (QueryTranslatorImpl.java:155)
>         at org.hibernate.hql.ast.QueryTranslatorImpl.compile
> (QueryTranslatorImpl.java:105)
>         at org.hibernate.engine.query.HQLQueryPlan.<init>(
> HQLQueryPlan.java:74)
>         at org.hibernate.engine.query.HQLQueryPlan.<init>(
> HQLQueryPlan.java:53)
>         at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan
> (QueryPlanCache.java:71)
>         at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries
> (SessionFactoryImpl.java:363)
>         at org.hibernate.impl.SessionFactoryImpl.<init>
> (SessionFactoryImpl.java:327)
>         at org.hibernate.cfg.Configuration.buildSessionFactory
> (Configuration.java:1154)
>
>
>