As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.alfresco.jcr.util.JCRProxyFactory$SessionContextInvocationHandler
My use case is that I have JBoss installation with Alfresco WAR (from JBoss bundle) and my EAR (EJB3 beans + WAR). I need to access Alfresco's JCR repository from my web application. Alfresco's bundled Hibernate is incompatible with JBoss EJB3 deployer one's so I have to isolate Alfresco WAR classloader from UCL. The main problem is that repository impementation is hibernate-backed and hibernate uses lazy loading - tries to load objects (nodes and their properties) on client (my webapp) side.Question is - how should I get reference to javax.jcr.Repository instance so that all real work will be done in Alfresco WAR classes without trying to use my webapp classes?I tried the following:1. Simply put repository to JNDI and access it. Doesn't work because of ClassCastExceptions - uses hibernate classes from my webapp classloader which are different from Alfresco's ones.2. Put ejb3 deployer libs as shared (myserver/lib) and remove hibernate-related jars from alfresco so we'll both use same jars. Doesn't work because now I have to put ALL alfresco jars as shared for jboss server and I really don't want it.3. Export Spring JCR.Repository bean through RMI. Doesn't work because of Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.alfresco.jcr.util.JCRProxyFactory$SessionContextInvocationHandler
<attribute name="Java2ClassLoadingCompliance">false</attribute> <attribute name="UseJBossWebLoader">false</attribute>
<?xml version="1.0"?> <jboss-web> <class-loading java2ClassLoadingCompliance="false"> <loader-repository> alfresco.org:loader=alfresco.war <loader-repository-config>java2ParentDelegation=false</loader-repository-config> </loader-repository> </class-loading> </jboss-web>
<!– The call by value mode. true if all lookups are unmarshalled using the caller's TCL, false if in VM lookups return the value by reference. –> <attribute name="CallByValue">true</attribute>
13:27:31,602 WARN [RequestExceptionReporter] Exception during post-request cleanup: org.hibernate.hql.ast.HqlToken java.lang.ClassCastException: org.hibernate.hql.ast.HqlToken at antlr.CharScanner.makeToken(CharScanner.java:175) at org.hibernate.hql.ast.HqlLexer.makeToken(HqlLexer.java:39) at org.hibernate.hql.antlr.HqlBaseLexer.mIDENT(HqlBaseLexer.java:580) at org.hibernate.hql.antlr.HqlBaseLexer.nextToken(HqlBaseLexer.java:264) at antlr.TokenBuffer.fill(TokenBuffer.java:69) at antlr.TokenBuffer.LA(TokenBuffer.java:80) at antlr.LLkParser.LA(LLkParser.java:52) at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:139) at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:231) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:150) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:100) at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:459) at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:904) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:854) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74) at org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl$2.doInHibernate(HibernateNodeDaoServiceImpl.java:130) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:311) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:288) at org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl.getStores(HibernateNodeDaoServiceImpl.java:133) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122) at org.alfresco.repo.transaction.NodeDaoServiceTransactionInterceptor.invoke(NodeDaoServiceTransactionInterceptor.java:61) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174) at $Proxy46.getStores(Unknown Source) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:179) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) at $Proxy183.login(Ljavax.jcr.Credentials;)Lorg.apache.jackrabbit.rmi.remote.RemoteSession;(Unknown Source) at org.apache.jackrabbit.rmi.client.ClientRepository.login(ClientRepository.java:97) at com.fis.web.alfresco.AlfrescoJcrSessionFactory.createSession(AlfrescoJcrSessionFactory.java:47) at $SessionFactory_107d5c41552.createSession()Ljavax.jcr.Session;($SessionFactory_107d5c41552.java:???) at com.fis.web.jcr.impl.SessionProviderImpl.getSession(SessionProviderImpl.java:37) at $SessionProvider_107d5c41514.getSession()Ljavax.jcr.Session;($SessionProvider_107d5c41514.java:???) at com.fis.web.jcr.JcrBinding.getObject(JcrBinding.java:26) at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:87) at $Info_0.pageDetached(Lorg.apache.tapestry.event.PageEvent;)V($Info_0.java:???) at org.apache.tapestry.AbstractPage.firePageDetached(AbstractPage.java:452) at org.apache.tapestry.AbstractPage.detach(AbstractPage.java:140) at org.apache.tapestry.pageload.PageSource.releasePage(PageSource.java:138) at $IPageSource_107d5c4142a.releasePage(Lorg.apache.tapestry.IPage;)V($IPageSource_107d5c4142a.java:???) at org.apache.tapestry.engine.RequestCycle.cleanup(RequestCycle.java:190) at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:289) at org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60) at $WebRequestServicer_107d5c41480.service(Lorg.apache.tapestry.web.WebRequest;Lorg.apache.tapestry.web.WebResponse;)V($WebRequestServicer_107d5c41480.java:???) at com.fis.web.jcr.impl.SessionFilter.service(SessionFilter.java:14) at $WebRequestServicerFilter_107d5c4147e.service(Lorg.apache.tapestry.web.WebRequest;Lorg.apache.tapestry.web.WebResponse;Lorg.apache.tapestry.services.WebRequestServicer;)V($WebRequestServicerFilter_107d5c4147e.java:???) at $WebRequestServicer_107d5c41482.service(Lorg.apache.tapestry.web.WebRequest;Lorg.apache.tapestry.web.WebResponse;)V($WebRequestServicer_107d5c41482.java:???) at $WebRequestServicer_107d5c4147a.service(Lorg.apache.tapestry.web.WebRequest;Lorg.apache.tapestry.web.WebResponse;)V($WebRequestServicer_107d5c4147a.java:???) at org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56) at $ServletRequestServicer_107d5c4146a.service(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V($ServletRequestServicer_107d5c4146a.java:???) at org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)