[ https://issues.apache.org/jira/browse/WSCOMMONS-271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12655853#action_12655853 ]
Todd Wolff commented on WSCOMMONS-271: -------------------------------------- @Andreas: To provide a bit of context, I assumed the motive behind splitting the axiom project into separate artifiacts, i.e. an API artifact, a DOM impl artifact and an OM impl artifact (and perhaps someday a third party impl artifact) was to allow for different implementations of the same API within the scope of a single JVM. If that's true, then the current architecture does not allow this, e.g. one deployment cannot choose to use the DOM factory and another the OM factory. The use-case here involves 'deployments' authored by different organizations, i.e. an application which uses version y.y of the dom impl and an application which uses version y.y of the OM impl - both of which share version y.y of the API. Mixing impl versions and api versions would be a nice-to-have, but not critical. I could imagine a situation where future API releases, which are backwards compatible with impl artifacts, would allow deployments authored by different organizations to upgrade to a later axiom impl release on different schedules. > OMAbstractFactory should use thread context classloader rather than > Class.forName(omFactory) > -------------------------------------------------------------------------------------------- > > Key: WSCOMMONS-271 > URL: https://issues.apache.org/jira/browse/WSCOMMONS-271 > Project: WS-Commons > Issue Type: Improvement > Components: AXIOM > Reporter: Todd Wolff > > Different 'deployments' should be able to 'share' the axiom api artifact, > i.e. deployments should be able to hide their choice of implementation from > other 'deployments.' By using Class.forName(), which uses OMAbstractFactory's > defining classloader, and requiring a system property to identify the factory > impl, the choice of implementation must be the same for all 'deployments.' > If thread context classloader is used instead, along with the java service > provider loading mechanism, each deployment could effectively 'scope' its > desired version of the axiom impl artifact to its deployment (each of which > has its own classloader), along with a service provider file which indicates > the factory impl choice. The axiom api artifact (loaded by a 'shared' > classloader) could then be 'shared' across deployments. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.