<?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 Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203289#M156419</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Nice blog post Joram. My true name is Julien Kronegg.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 22 Aug 2014 10:40:54 GMT</pubDate>
    <dc:creator>jkronegg</dc:creator>
    <dc:date>2014-08-22T10:40:54Z</dc:date>
    <item>
      <title>More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203283#M156413</link>
      <description>Hi all,I have a setup with about 50 ProcessEngine‍, each connected to a different datasource (one for each company branch), using H2 file database (for testing).Each ProcessEngine‍ uses about 4 MB of memory, including about 3.6 MB for MyBatis Configuration‍ (determined through heap dump analysis).&amp;amp;l</description>
      <pubDate>Fri, 25 Jul 2014 07:30:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203283#M156413</guid>
      <dc:creator>jkronegg</dc:creator>
      <dc:date>2014-07-25T07:30:23Z</dc:date>
    </item>
    <item>
      <title>Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203284#M156414</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Nice! This is a sweet 'hackaround' which makes my development heart tick &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do we need to copy the fields? Can't we just set the Configuration object using reflection, too? (instead of copying those three fields)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jul 2014 16:04:00 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203284#M156414</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-07-25T16:04:00Z</dc:date>
    </item>
    <item>
      <title>Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203285#M156415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Well, the fields are not copied, just referenced. But it's true that instead of referencing those three fields in &lt;/SPAN&gt;&lt;CODE&gt;sharedOrmConfigurationObjects&lt;/CODE&gt;&lt;SPAN&gt;, we could reference the first created &lt;/SPAN&gt;&lt;CODE&gt;ProcessEngine&lt;/CODE&gt;&lt;SPAN&gt;'s MyBatis configuration fields. But the &lt;/SPAN&gt;&lt;CODE&gt;ProcessEngines&lt;/CODE&gt;&lt;SPAN&gt; keeps a &lt;/SPAN&gt;&lt;CODE&gt;Map&amp;lt;String,ProcessEngine&amp;gt;&lt;/CODE&gt;&lt;SPAN&gt; as a &lt;/SPAN&gt;&lt;CODE&gt;HashMap&lt;/CODE&gt;&lt;SPAN&gt; which is not ordered, so how could we get the first &lt;/SPAN&gt;&lt;CODE&gt;ProcessEngine&lt;/CODE&gt;&lt;SPAN&gt; ?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 26 Jul 2014 07:33:34 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203285#M156415</guid>
      <dc:creator>jkronegg</dc:creator>
      <dc:date>2014-07-26T07:33:34Z</dc:date>
    </item>
    <item>
      <title>Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203286#M156416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Well, we can always change the implementation of ProcessEngines, of course.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Maybe the first engine that boots up put its Configuration&amp;nbsp; into some shared fields or map of the ProcessEngines class.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 Jul 2014 07:32:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203286#M156416</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-07-30T07:32:23Z</dc:date>
    </item>
    <item>
      <title>Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203287#M156417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;In fact we could simply modifying the &lt;/SPAN&gt;&lt;CODE&gt;ProcessEngineConfigurationImpl&lt;/CODE&gt;&lt;SPAN&gt; by adding in &lt;/SPAN&gt;&lt;CODE&gt;initSqlSessionFactory()&lt;/CODE&gt;&lt;SPAN&gt;, after &lt;/SPAN&gt;&lt;CODE&gt;configuration.setEnvironment(environment)&lt;/CODE&gt;&lt;SPAN&gt;, the following code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection&amp;lt;ProcessEngine&amp;gt; processEngines = ProcessEngines.getProcessEngines().values();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!processEngines.isEmpty()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessEngine firstProcessEngine = processEngines.iterator().next();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (firstProcessEngine instanceof ProcessEngineImpl) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessEngineImpl pe = (ProcessEngineImpl)firstProcessEngine;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Configuration firstConfiguration = pe.getProcessEngineConfiguration().getSqlSessionFactory().getConfiguration();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shareConfigurationField(configuration, firstConfiguration, "sqlFragments");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shareConfigurationField(configuration, firstConfiguration, "mappedStatements");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shareConfigurationField(configuration, firstConfiguration, "resultMaps");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;and the following &lt;/SPAN&gt;&lt;CODE&gt;shareConfigurationField()&lt;/CODE&gt;&lt;SPAN&gt; method:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp; /**&lt;BR /&gt;&amp;nbsp;&amp;nbsp; * Share a specific field of the MyBatis Configuration. &lt;BR /&gt;&amp;nbsp;&amp;nbsp; * @param configuration the current configuration&lt;BR /&gt;&amp;nbsp;&amp;nbsp; * @param sharedObjectFieldName the field to be shared&lt;BR /&gt;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp; private static void shareConfigurationObject(final Configuration configuration, final Configuration firstConfiguration, final String sharedObjectFieldName) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throwable exception = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get the field to share &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Field sharedField = Configuration.class.getDeclaredField(sharedObjectFieldName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sharedField.setAccessible(true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object sharedObject = sharedField.get(firstConfiguration);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // we got a shared object =&amp;gt; use it in the configuration&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sharedField.set(configuration, sharedObject);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (NoSuchFieldException e) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exception = e;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IllegalArgumentException e) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exception = e;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IllegalAccessException e) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exception = e;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (exception != null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGGER.log(Level.WARNING, "could not configured ORM with shared " + sharedObjectFieldName + " field; " + exception.toString(), exception);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&lt;/CODE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jul 2014 00:44:26 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203287#M156417</guid>
      <dc:creator>jkronegg</dc:creator>
      <dc:date>2014-07-31T00:44:26Z</dc:date>
    </item>
    <item>
      <title>Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203288#M156418</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Julien,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I finally came around trying out your stuff … and blogging about it: &lt;/SPAN&gt;&lt;A href="http://www.jorambarrez.be/blog/2014/08/22/seriously-reducing-memory/" rel="nofollow noopener noreferrer"&gt;http://www.jorambarrez.be/blog/2014/08/22/seriously-reducing-memory/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cool stuff!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Aug 2014 07:10:48 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203288#M156418</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-08-22T07:10:48Z</dc:date>
    </item>
    <item>
      <title>Re: More than one ProcessEngine: reducing memory footprint by 10x using MyBatis shared configuration fields</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203289#M156419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Nice blog post Joram. My true name is Julien Kronegg.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Aug 2014 10:40:54 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/more-than-one-processengine-reducing-memory-footprint-by-10x/m-p/203289#M156419</guid>
      <dc:creator>jkronegg</dc:creator>
      <dc:date>2014-08-22T10:40:54Z</dc:date>
    </item>
  </channel>
</rss>

