[jboss-jira] [JBoss JIRA] (AS7-5496) Hibernate proxy class not found in remote EJB call

Scott Marlow (JIRA) jira-events at lists.jboss.org
Fri Sep 7 10:40:35 EDT 2012


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

Scott Marlow commented on AS7-5496:
-----------------------------------

I still haven't figured out why EclipseLink works but Hibernate doesn't.  I'm thinking that EclipseLink might not be generating a proxy for the lazy association.

The full exception stack trace is:
{quote}
20:03:43,598 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost/127.0.0.1:8080-1) Error Rendering View[/index.xhtml]: javax.el.ELException: /thumbnails.xhtml @11,53 rendered="#{thumbnailBean.hasPhotos}": java.lang.RuntimeException: JBAS014154: Failed to marshal EJB parameters
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:413) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1773) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:424) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.4.Final.jar:2.0.4.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.17.Final.jar:]
	at de.seimet.photo.filter.DownloadFilter.doFilter(DownloadFilter.java:76) [classes:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.17.Final.jar:]
	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) [weld-core-1.1.9.Final.jar:2012-08-06 19:12]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.17.Final.jar:]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165) [jboss-as-web-7.1.3.Final-SNAPSHOT.jar:7.1.3.Final-SNAPSHOT]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.17.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372) [jbossweb-7.0.17.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.17.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679) [jbossweb-7.0.17.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) [jbossweb-7.0.17.Final.jar:]
	at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_07]
Caused by: java.lang.RuntimeException: JBAS014154: Failed to marshal EJB parameters
	at org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:269) [jboss-as-ejb3-7.1.3.Final-SNAPSHOT.jar:7.1.3.Final-SNAPSHOT]
	at org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:258) [jboss-as-ejb3-7.1.3.Final-SNAPSHOT.jar:7.1.3.Final-SNAPSHOT]
	at org.jboss.as.ejb3.remote.LocalEjbReceiver.processInvocation(LocalEjbReceiver.java:169) [jboss-as-ejb3-7.1.3.Final-SNAPSHOT.jar:7.1.3.Final-SNAPSHOT]
	at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.TransactionInterceptor.handleInvocation(TransactionInterceptor.java:42) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:125) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104) [jboss-ejb-client-1.0.11.Final.jar:1.0.11.Final]
	at $Proxy59.test(Unknown Source)	at de.seimet.photo.backing.ThumbnailBean.getHasPhotos(ThumbnailBean.java:81) [classes:]
	at de.seimet.photo.backing.ThumbnailBean$Proxy$_$$_WeldClientProxy.getHasPhotos(ThumbnailBean$Proxy$_$$_WeldClientProxy.java) [classes:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_07]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_07]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_07]
	at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_07]
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:302) [jboss-el-api_2.2_spec-1.0.2.Final.jar:1.0.2.Final]
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.11-jbossorg-3.jar:]
	at org.apache.el.parser.AstValue.getValue(AstValue.java:169) [jbossweb-7.0.17.Final.jar:]
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) [jbossweb-7.0.17.Final.jar:]
	at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) [weld-core-1.1.9.Final.jar:2012-08-06 19:12]
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) [jsf-impl-2.1.11-jbossorg-3.jar:]
	... 35 more
Caused by: java.lang.ClassNotFoundException: de.seimet.photo.entity.Location_$$_javassist_2 from [Module "deployment.photo_ear.ear.photo_ejb.jar:main" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
	at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_07]
	at java.lang.Class.forName(Class.java:264) [rt.jar:1.7.0_07]
	at org.jboss.marshalling.cloner.ClassLoaderClassCloner.clone(ClassLoaderClassCloner.java:49)
	at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:157)
	at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)
	at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:186)
	at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)
	at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348)
	at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309)
	at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253)
	at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)
	at org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:267) [jboss-as-ejb3-7.1.3.Final-SNAPSHOT.jar:7.1.3.Final-SNAPSHOT]
	... 59 more
{quote}
                
> Hibernate proxy class not found in remote EJB call
> --------------------------------------------------
>
>                 Key: AS7-5496
>                 URL: https://issues.jboss.org/browse/AS7-5496
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: JPA / Hibernate
>    Affects Versions: 7.1.2.Final (EAP), 7.1.3.Final (EAP)
>         Environment: Java 1.6.0_35 and Java 1.7.0_07
> Mac OS X 10.8.1, Windows XP and Gentoo Linux with Kernel 3.5.3
>            Reporter: Uwe Seimet
>            Assignee: Scott Marlow
>         Attachments: deployments.tar.gz, server.log, sources.tar.gz, test.sql
>
>
> Prerequisites:
> 1. A JPA entity A with a reference to a different JPA entity B. FetchType is FetchType.LAZY, e.g.
> @Entity
> public class A {
>   @ManyToOne(fetch = FetchType.LAZY)
>   private B refToB;
> }
> @Entity
> public class B {
> }
> 2. A remote interface with methods passing an instance of A, .e.g.
> @Remote
> public interface ITest {
>     A test1();
>     void test2(A a);
> }
> 3. A process calling test1() and then test2() on the remote interface like this:
>   @EJB(lookup = "...")
>   private ITest iTest;
>   public void ITest() {
>         final A a = iTest.test1();
>         iTest.test2(a);  }
>   }
> Error description: When calling test1() an instance of A is returned. This instance is valid and works as expected. The reference to B is a proxy (something like B_$$_javassist_2), which was expected because B was loaded lazily and was never accessed in the remote process before. When passing the instance of A back by calling test2(a) an exception of this type is raised:
> java.lang.ClassNotFoundException: B_$$_javassist_2 from [Module "deployment.x.ear.y_ejb.jar:main" from Service Module Loader]
> 	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(Concurrent
> ClassLoader.java:468)
> It looks as if the proxy cannot be serialized or deserialized. The behavior is reproducible with different applications on different platforms. As soon as a Hibernate javassist proxy, which was received via a remote call, is passed back as an argument in another remote call (the remote process is the same in all calls) the exception is raised.
> The classloader settings are the standard JBoss settings.

--
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