<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Activiti within OSGi: Classloader issues after bundle update in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/activiti-within-osgi-classloader-issues-after-bundle-update/m-p/92558#M63253</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi everyone,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We are building a process-driven web application based on OSGi. We were hoping to make use of OSGi's hot deployment capabilities to update different parts of our system independently without having to restart the server.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Unfortunately, that's when we run into problems. Once we update bundles that are using the engine's functionality, we receive the following errors:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;May 03, 2012 9:26:10 AM org.activiti.engine.impl.interceptor.CommandContext close&lt;BR /&gt;SEVERE: Error while closing command context&lt;BR /&gt;java.lang.ClassCastException: org.activiti.engine.impl.persistence.entity.PropertyEntity cannot be cast to org.activiti.engine.impl.db.PersistentObject&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.selectById(DbSqlSession.java:217)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.dbSchemaUpdate(DbSqlSession.java:629)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:885)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:25)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.ProcessEngineImpl.&amp;lt;init&amp;gt;(ProcessEngineImpl.java:77)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:271)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.engine.adapter.activiti.ActivitiEngine.initializeEngine(ActivitiEngine.java:53)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.engine.core.ProcessEngineModule.initializeEngine(ProcessEngineModule.java:67)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.engine.core.ProcessEngineModule.&amp;lt;init&amp;gt;(ProcessEngineModule.java:49)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.modelwrapper.Account.findAccount(Account.java:144)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.handler.LoginHandler.post(LoginHandler.java:34)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.dispatcher.LoginDispatcher.doPost(LoginDispatcher.java:56)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.controller.FrontController.startService(FrontController.java:76)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.controller.FrontController.doFilter(FrontController.java:156)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.filter.core.PaasChain.doFilter(PaasChain.java:28)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.filter.PaasMessageFilter.doFilter(PaasMessageFilter.java:46)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.filter.core.PaasChain.doFilter(PaasChain.java:28)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at de.paas.dispatcher.LoginDispatcher.service(LoginDispatcher.java:40)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:91)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:110)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:115)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.Thread.run(Thread.java:722)&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;It was mentioned in another thread in this forum, that the error indicates two classes being loaded by different class loaders and that one could try to explicitly set the classloader for the engine like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();&lt;BR /&gt;processEngineConfiguration.setClassLoader(Thread.currentThread().getContextClassLoader());&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;Unfortunately, this didn't work for us and the error is still thrown.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would highly appreciate any comments and advice on this! Thank you in advance,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Johannes&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 04 May 2012 12:06:24 GMT</pubDate>
    <dc:creator>bpaas</dc:creator>
    <dc:date>2012-05-04T12:06:24Z</dc:date>
    <item>
      <title>Activiti within OSGi: Classloader issues after bundle update</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-within-osgi-classloader-issues-after-bundle-update/m-p/92558#M63253</link>
      <description>Hi everyone,We are building a process-driven web application based on OSGi. We were hoping to make use of OSGi's hot deployment capabilities to update different parts of our system independently without having to restart the server.Unfortunately, that's when we run into problems. Once we update bund</description>
      <pubDate>Fri, 04 May 2012 12:06:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-within-osgi-classloader-issues-after-bundle-update/m-p/92558#M63253</guid>
      <dc:creator>bpaas</dc:creator>
      <dc:date>2012-05-04T12:06:24Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti within OSGi: Classloader issues after bundle update</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-within-osgi-classloader-issues-after-bundle-update/m-p/92559#M63254</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I will try to be a little more specific with what is going on based on my understanding. Upon the initial server startup, we build a first engine instance using processEngineConfiguration.buildProcessEngine(). Everything is working fine subsequently until we update the bundle. Despite calling ProcessEngines.destroy() beforehand, we receive the above mentioned error. It seems to originate from attempted casts from objects loaded by the first bundle to objects loaded by the second bundle - failing because of different classloaders.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thus, I would like to ask for a hint on how to destroy all objects/close all sessions by Activiti so that everything will be loaded by the new classloader again. I called ProcessEngines.init() for example and it told me that "ProcessEngines" were already initialized - despite ProcessEngines.destroy()?!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 May 2012 13:10:38 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-within-osgi-classloader-issues-after-bundle-update/m-p/92559#M63254</guid>
      <dc:creator>bpaas</dc:creator>
      <dc:date>2012-05-07T13:10:38Z</dc:date>
    </item>
  </channel>
</rss>

