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