[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2141) problem with JavaAssist

Russ Egan (JIRA) noreply at atlassian.com
Fri Jan 25 11:55:55 EST 2008


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_29411 ] 

Russ Egan commented on HHH-2141:
--------------------------------

I think I see how this can happen.  It requires a specific set of circumstances:
1. The classloader for hibernate classes must be different than the classloader for your persistant classes.
2. The persistent class must be an interface.

To reproduce, deploy an ear in JBoss 4.2.1, and make the ear's classloader isolated.  Then map table to an interface, as above.

Even then, the problem will only happen intermittently.  Here's the cause:

Look at the code for JavassistLazyInitializer.getProxyFactory (lines 134-138 in hibernate 3.2.4.sp1).  Note how it only sets factory.superclass if the number of proxy interfaces is 1.  If the number of interfaces is 1, the superclass is set to the persistentclass.
Now look in ProxyFactory.getClassLoader0():

protected ClassLoader getClassLoader0() {
        ClassLoader loader = null;
        if (superClass != null && !superClass.getName().equals("java.lang.Object"))
            loader = superClass.getClassLoader();
        else if (interfaces != null && interfaces.length > 0)
            loader = interfaces[0].getClassLoader();
 
        if (loader == null) {
            loader = getClass().getClassLoader();
            // In case javassist is in the endorsed dir
            if (loader == null) {
                loader = Thread.currentThread().getContextClassLoader();
                if (loader == null)
                    loader = ClassLoader.getSystemClassLoader();
            }
        }

        return loader;
    }

See how it first tries to use the superclass' classloader, and failing that, it tries the classloader of the first proxy interface?  In the case where the proxy interface set.length=1, ProxyFactory.superclass is set to the persistantClass.  This is good, because the persistentClass's classloader can probably load all your application's classes.  But in cases where the proxy interface set's length > 1, ProxyFactory.superclass is not set, and ProxyFactory will just use the classloader of the first interface proxy.  Trouble is, that set if interface proxies usually contains one or more of your application's interfaces, as well as HibernateProxy, an interface defined in the hibernate libraries.  (You can see how the set of interface proxies is built in org.hibernate.tuple.entity.PojoEntityTuplizer#buildProxyFactory()).

If HibernateProxy is the first interface in ProxyFactory.interfaces[], then its classloader will be used.  But that classloader is the one used to load hibernate, which in many cases will not have visibility to you application's classes, hence the NoClassDefFoundError.

Also, this will happen randomly, because it is indeterminant which interface is the first one in that ProxyFactory.interfaces[] array.  That array is built from an unordered Set (JavassistProxyFactory.postInstantiate() line 38).  So sometimes your app's interface will be first, and it will work, but sometimes HibernateProxy is first, and you get the NoClassDefFoundError.

Looks like as a workaround, map to a concrete class rather than an interface.  The fix looks like either ordering the ProxyFactory.interfaces[] array, or overriding how ProxyFactory gets its classloader (probably the most correct approach), which can be done by setting ProxyFactory.classLoaderProvider.  Annoyingly, this is a static variable, so this isn't a thread-safe approach.  Another approach is subclassing ProxyFactory and overriding getClassLoader().

> problem with JavaAssist 
> ------------------------
>
>                 Key: HHH-2141
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2141
>             Project: Hibernate3
>          Issue Type: Bug
>    Affects Versions: 3.2.0.cr2
>            Reporter: Ramil Israfilov
>
> I have an Java interface:
> public interface Credentials {
> 	public long getId();
> 	public void setId(long id);
> 	
>     Object getCredentialsForProtocol(String protocol) throws ProtocolException;
> }
> and implementation class:
> -------
> public class BasicCredentials implements Serializable, Credentials {
> 	private long id;
>     private String username;
>     private String password;
>     private static final Log log = LogFactory.getLog(BasicCredentials.class);
>     public BasicCredentials() {
>         super();
>     }
>     public BasicCredentials(String username, String password) {
>         super();
>         this.username = username;
>         this.password = password;
>     }
>     /**
>      * @return Returns the password.
>      */
>     public String getPassword() {
>         return password;
>     }
>     /**
>      * @param password
>      *            The password to set.
>      */
>     public void setPassword(String password) {
>         this.password = password;
>     }
>     /**
>      * @return Returns the username.
>      */
>     public String getUsername() {
>         return username;
>     }
>     /**
>      * @param username
>      *            The username to set.
>      */
>     public void setUsername(String username) {
>         this.username = username;
>     }
>     public Object getCredentialsForProtocol(String protocol) {
>         if (protocol != null && protocol.equalsIgnoreCase("HTTP")) {
>             return new UsernamePasswordCredentials(username, password);
>         }
>         log.error("Unsupported protoco:" + protocol);
>         return null;
>     }
> 	public long getId() {
> 		return id;
> 	}
> 	public void setId(long id) {
> 		this.id = id;
> 	}
> ----
> Also I have an Credentials.hbm.xml file:
> <hibernate-mapping package="be.certipost.comms.accessclient">
>  <class name="Credentials" table="COMMS$CREDENTIALS">
>   <id name="id" type="long" unsaved-value="0">
>    <generator class="native"/>
>   </id>
>   <discriminator column="CREDENTIALS_TYPE" type="string"/>
>   <subclass name="BasicCredentials" discriminator-value="BC">
>   	<property name="username" lazy="false" generated="never" type="string"></property>
>   	<property name="password" lazy="false" generated="never" type="string"></property>
>   </subclass>
>  </class>
> </hibernate-mapping>
> I have deployed those claases and mapping to JBOSS 4.0.4GA: I construct EAR file which contains inside JAR file with my classes and hbm file.
> And during deploying I got error:
> 2006-10-12 10:37:32,350 INFO  [org.hibernate.cfg.Environment] Hibernate 3.2 cr2
> 2006-10-12 10:37:32,365 INFO  [org.hibernate.cfg.Environment] hibernate.properties not found
> 2006-10-12 10:37:32,381 INFO  [org.hibernate.cfg.Environment] Bytecode provider name : javassist
> 2006-10-12 10:37:32,381 INFO  [org.hibernate.cfg.Environment] using JDK 1.4 java.sql.Timestamp handling
> 2006-10-12 10:37:32,506 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: commons-lang-2.1.jar
> 2006-10-12 10:37:32,506 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: datatools.jar
> 2006-10-12 10:37:32,506 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: ejb3-persistence.jar
> 2006-10-12 10:37:32,506 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: jsr173_api.jar
> 2006-10-12 10:37:32,506 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: CertioneCommsClient.jar
> 2006-10-12 10:37:32,521 INFO  [org.hibernate.cfg.Configuration] Found mapping document in jar: be/certipost/comms/DataInstructions.hbm.xml
> 2006-10-12 10:37:32,771 INFO  [org.hibernate.cfg.HbmBinder] Mapping class: be.certipost.comms.DataInstructions -> COMMS$METADATAS
> 2006-10-12 10:37:32,818 INFO  [org.hibernate.cfg.Configuration] Found mapping document in jar: be/certipost/comms/Request.hbm.xml
> 2006-10-12 10:37:32,943 INFO  [org.hibernate.cfg.HbmBinder] Mapping class: be.certipost.comms.Request -> COMMS$REQUESTS
> 2006-10-12 10:37:32,959 INFO  [org.hibernate.cfg.HbmBinder] Mapping collection: be.certipost.comms.Request.acks -> COMMS$REQ_ACKS
> 2006-10-12 10:37:33,193 INFO  [org.hibernate.cfg.Configuration] Found mapping document in jar: be/certipost/comms/Response.hbm.xml
> 2006-10-12 10:37:33,256 INFO  [org.hibernate.cfg.HbmBinder] Mapping class: be.certipost.comms.Response -> COMMS$RESPONSES
> 2006-10-12 10:37:33,256 INFO  [org.hibernate.cfg.HbmBinder] Mapping collection: be.certipost.comms.Response.acks -> COMMS$RESP_ACKS
> 2006-10-12 10:37:33,256 INFO  [org.hibernate.cfg.Configuration] Found mapping document in jar: be/certipost/comms/Session.hbm.xml
> 2006-10-12 10:37:33,506 INFO  [org.hibernate.cfg.HbmBinder] Mapping class: be.certipost.comms.Session -> COMMS$SESSIONS
> 2006-10-12 10:37:33,506 INFO  [org.hibernate.cfg.Configuration] Found mapping document in jar: be/certipost/comms/accessclient/Credentials.hbm.xml
> 2006-10-12 10:37:33,600 INFO  [org.hibernate.cfg.HbmBinder] Mapping class: be.certipost.comms.accessclient.Credentials -> COMMS$CREDENTIALS
> 2006-10-12 10:37:33,771 INFO  [org.hibernate.cfg.HbmBinder] Mapping subclass: be.certipost.comms.accessclient.BasicCredentials -> COMMS$CREDENTIALS
> 2006-10-12 10:37:33,771 INFO  [org.hibernate.cfg.Configuration] Found mapping document in jar: be/certipost/comms/accessclient/config/ClientProperties.hbm.xml
> 2006-10-12 10:37:33,818 INFO  [org.hibernate.cfg.HbmBinder] Mapping class: be.certipost.comms.accessclient.config.ClientProperties -> COMMS$CLIENTPROPERTIES
> 2006-10-12 10:37:33,818 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: hibernate-annotations.jar
> 2006-10-12 10:37:33,834 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: quartz-all-1.5.2.jar
> 2006-10-12 10:37:33,834 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: jaxb-impl.jar
> 2006-10-12 10:37:33,850 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: jaxb-api.jar
> 2006-10-12 10:37:33,850 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: activation.jar
> 2006-10-12 10:37:33,865 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: commons-httpclient-3.0.1.jar
> 2006-10-12 10:37:33,865 INFO  [org.hibernate.cfg.Configuration] Searching for mapping documents in jar: tmp38363CertioneCommsClient.ear
> 2006-10-12 10:37:33,865 INFO  [org.hibernate.cfg.HbmBinder] Mapping collection: be.certipost.comms.Session.requests -> COMMS$REQUESTS
> 2006-10-12 10:37:33,959 INFO  [org.hibernate.util.NamingHelper] JNDI InitialContext properties:{}
> 2006-10-12 10:37:33,959 INFO  [org.hibernate.connection.DatasourceConnectionProvider] Using datasource: java:/CertioneCommsDS
> 2006-10-12 10:37:33,975 INFO  [org.hibernate.cfg.SettingsFactory] RDBMS: HSQL Database Engine, version: 1.8.0
> 2006-10-12 10:37:33,975 INFO  [org.hibernate.cfg.SettingsFactory] JDBC driver: HSQL Database Engine Driver, version: 1.8.0
> 2006-10-12 10:37:34,021 INFO  [org.hibernate.dialect.Dialect] Using dialect: org.hibernate.dialect.HSQLDialect
> 2006-10-12 10:37:34,021 INFO  [org.hibernate.transaction.TransactionFactoryFactory] Transaction strategy: org.hibernate.transaction.JTATransactionFactory
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.util.NamingHelper] JNDI InitialContext properties:{}
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.transaction.TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.transaction.TransactionManagerLookupFactory] instantiated TransactionManagerLookup
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.transaction.TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.transaction.TransactionManagerLookupFactory] instantiated TransactionManagerLookup
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] Automatic flush during beforeCompletion(): enabled
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] Automatic session close at end of transaction: enabled
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] JDBC batch size: 15
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] JDBC batch updates for versioned data: enabled
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] Scrollable result sets: enabled
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] JDBC3 getGeneratedKeys(): disabled
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] Connection release mode: after_statement
> 2006-10-12 10:37:34,037 INFO  [org.hibernate.cfg.SettingsFactory] Maximum outer join fetch depth: 5
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Default batch fetch size: 1
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Generate SQL with comments: disabled
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Order SQL updates by primary key: disabled
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.hql.ast.ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Query language substitutions: {}
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Second-level cache: enabled
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Query cache: enabled
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Cache provider: org.hibernate.cache.HashtableCacheProvider
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Optimize cache for minimal puts: disabled
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Structured second-level cache entries: disabled
> 2006-10-12 10:37:34,053 INFO  [org.hibernate.cfg.SettingsFactory] Query cache factory: org.hibernate.cache.StandardQueryCacheFactory
> 2006-10-12 10:37:34,068 INFO  [org.hibernate.cfg.SettingsFactory] Statistics: disabled
> 2006-10-12 10:37:34,084 INFO  [org.hibernate.cfg.SettingsFactory] Deleted entity synthetic identifier rollback: disabled
> 2006-10-12 10:37:34,084 INFO  [org.hibernate.cfg.SettingsFactory] Default entity-mode: pojo
> 2006-10-12 10:37:34,131 INFO  [org.hibernate.impl.SessionFactoryImpl] building session factory
> 2006-10-12 10:37:34,506 ERROR [org.hibernate.proxy.pojo.BasicLazyInitializer] Javassist Enhancement failed: be.certipost.comms.accessclient.Credentials
> java.lang.RuntimeException: by java.lang.NoClassDefFoundError: be/certipost/comms/accessclient/Credentials
> 	at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:174)
> 	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:141)
> 	at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:42)
> 	at org.hibernate.tuple.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:159)
> 	at org.hibernate.tuple.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:131)
> 	at org.hibernate.tuple.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:50)
> 	at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:64)
> 	at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:256)
> 	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:418)
> 	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:108)
> 	at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
> 	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:223)
> 	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1213)
> 	at org.jboss.hibernate.jmx.Hibernate.buildSessionFactory(Hibernate.java:231)
> 	at org.jboss.hibernate.jmx.Hibernate.startService(Hibernate.java:155)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> 	at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> 	at $Proxy0.start(Unknown Source)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:417)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy4.start(Unknown Source)
> 	at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy37.start(Unknown Source)
> 	at org.jboss.deployment.XSLSubDeployer.start(XSLSubDeployer.java:197)
> 	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
> 	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:997)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
> 	at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy8.deploy(Unknown Source)
> 	at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
> 	at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
> 	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
> 	at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> 	at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> 	at $Proxy0.start(Unknown Source)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:417)
> 	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy4.start(Unknown Source)
> 	at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
> 	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:755)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy5.deploy(Unknown Source)
> 	at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
> 	at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
> 	at org.jboss.Main.boot(Main.java:200)
> 	at org.jboss.Main$1.run(Main.java:464)
> 	at java.lang.Thread.run(Thread.java:595)
> Caused by: javassist.CannotCompileException: by java.lang.NoClassDefFoundError: be/certipost/comms/accessclient/Credentials
> 	at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:167)
> 	at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:170)
> 	... 126 more
> Caused by: java.lang.NoClassDefFoundError: be/certipost/comms/accessclient/Credentials
> 	at java.lang.ClassLoader.defineClass1(Native Method)
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:159)
> 	... 127 more
> 2006-10-12 10:37:34,615 WARN  [org.hibernate.tuple.PojoEntityTuplizer] could not create proxy factory for:be.certipost.comms.accessclient.Credentials
> org.hibernate.HibernateException: Javassist Enhancement failed: be.certipost.comms.accessclient.Credentials
> 	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:149)
> 	at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:42)
> 	at org.hibernate.tuple.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:159)
> 	at org.hibernate.tuple.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:131)
> 	at org.hibernate.tuple.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:50)
> 	at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:64)
> 	at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:256)
> 	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:418)
> 	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:108)
> 	at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
> 	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:223)
> 	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1213)
> 	at org.jboss.hibernate.jmx.Hibernate.buildSessionFactory(Hibernate.java:231)
> 	at org.jboss.hibernate.jmx.Hibernate.startService(Hibernate.java:155)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> 	at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> 	at $Proxy0.start(Unknown Source)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:417)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:435)
> 	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy4.start(Unknown Source)
> 	at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy37.start(Unknown Source)
> 	at org.jboss.deployment.XSLSubDeployer.start(XSLSubDeployer.java:197)
> 	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
> 	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:997)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
> 	at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy8.deploy(Unknown Source)
> 	at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
> 	at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
> 	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
> 	at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> 	at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> 	at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> 	at $Proxy0.start(Unknown Source)
> 	at org.jboss.system.ServiceController.start(ServiceController.java:417)
> 	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy4.start(Unknown Source)
> 	at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
> 	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
> 	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:755)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> 	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> 	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> 	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> 	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> 	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> 	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> 	at $Proxy5.deploy(Unknown Source)
> 	at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
> 	at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
> 	at org.jboss.Main.boot(Main.java:200)
> 	at org.jboss.Main$1.run(Main.java:464)
> 	at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.RuntimeException: by java.lang.NoClassDefFoundError: be/certipost/comms/accessclient/Credentials
> 	at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:174)
> 	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:141)
> 	... 125 more
> Caused by: javassist.CannotCompileException: by java.lang.NoClassDefFoundError: be/certipost/comms/accessclient/Credentials
> 	at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:167)
> 	at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:170)
> 	... 126 more
> Caused by: java.lang.NoClassDefFoundError: be/certipost/comms/accessclient/Credentials
> 	at java.lang.ClassLoader.defineClass1(Native Method)
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:159)
> 	... 127 more
> Strange thing that tables are created and credentials objects persisted correctly.
> It is starnge that I got ERROR in log files. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list