BJ Freeman wrote:
> I am sure you know why but would you enlighten us  as to why this is
> necessary.
> Does it break using ofbiz with external tomcat?

Because it makes startup faster.

I did no changes to tomcat, and can't say whether the stuff I've done
will work with anything other than the tomcat already included.

The other synchronization->concurrent stuff I'm doing in
framework/base and the like won't have any bearing on the catalina
workarounds; those will come first.

> 
> Adam Heath sent the following on 6/25/2010 11:20 AM:
> 
> 
> =========================
> BJ Freeman
> http://bjfreeman.elance.com
> Strategic Power Office with Supplier Automation 
> <http://www.businessesnetwork.com/automation/viewforum.php?f=52>
> Specialtymarket.com  <http://www.specialtymarket.com/>
> 
> Systems Integrator-- Glad to Assist
> 
> Chat  Y! messenger: bjfr33man
> Linkedin
> <http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro>
> 
> 
>> I've got a change to ofbiz startup to make loading of the webapps run
>> in parallel.  Unfortunately, it's been taking me longer than I'd like
>> to get working completely.
>>
>> Catalina itself is single-threaded when loading the webapps attached
>> to a particular host.  That fix required me initializing the Context
>> classes myself before adding to the host.  Unfortunately, that had 2
>> concurrency bugs in catalina, that I had to hack around.  One was yet
>> another synchronization.  The other was corruption when catalina tried
>> to use a global static map to old intermediate data while parsing the
>> web.xml files.
>>
>> However, once I got all those fixed, ofbiz itself stopped the
>> parallelization.  The startup code called by ControlServlet and
>> ContextFilter end up calling into synchronized ofbiz blocks, which
>> effectively stops things from running in parallel.  My fix there is to
>> remove the synchronized blocks, and switch to more concurrent type algos.
>>
>> The latest problem with that, is that FastMap was used to hold the
>> list of components found.  When things are inserted into a FastMap,
>> iteration over the values maintains the order that they were added in.
>>   Switching to ConcurrentHashMap, or ConcurrentLinkedHashMap, gives
>> things back in an effectively random order.  My plan here is to add
>> 'dependencies' to the component definitions.  Then, if no dependencies
>> are specified for a particular ofbiz-component.xml, it'll default to
>> depending on all currently loaded components.  I already have a
>> dependency resolver written, to put the components in the proper
>> order.  This will also allow us to start encoding real dependency
>> settings into ofbiz.
>>
>> I should have this all ready to go by sunday evening.
>>

Reply via email to