You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Yevgeny Rouban <yr...@gmail.com> on 2007/02/09 14:21:49 UTC
Re: [Axis2-1.0] Rampart/Axoim Threading Issues
Hello.
The threading fix committed to the Axiom DOM by Ruchith Fernando [1]
seems to not resolve the problem.
1. Imagine two threads enter the method setDOOMRequired(true).
The faster one calls System.setProperty(systemKey,
DocumentBuilderFactoryImpl.class.getName()).
Then the slower thread executes originalDocumentBuilderFactory =
DocumentBuilderFactory.newInstance(). This time the
originalDocumentBuilderFactory gets lost, because it becomes
org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl.
2. Another way to break the application for two threads is to call
setDOOMRequired(false) by one thread while the other is in
DOOMRequired state and is going to get a DocumentBuilderFactory. The
later thread will get original Document Builder (probably Xerces)
rather than DOOM because the system wide property is reset by the
first thread.
I do not know a good fix for the problem other than thread synchronization.
Another way (a bit clumsy) I see is to remove system property and set
up a thread context class loader which overrides Jar Service Provider
Mechanism via getResourceAsStream for
META-INF/services/javax.xml.parsers.DocumentBuilderFactory. This class
loader should return
org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl in
DOOMRequired state and delegate to the parent class loader in
non-DOOMRequired state.
[1] http://marc.theaimsgroup.com/?l=axis-user&m=116237867100030&w=2
--
Yevgeny Rouban
INTEL Middleware Products Division
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org
Re: [Axis2-1.0] Rampart/Axoim Threading Issues
Posted by Ruchith Fernando <ru...@gmail.com>.
Hi,
This issue is fixed in Rampart-1.1 which can be used with Axis2-1.1
and Axis2-1.1.1
We are not using the setDOOMRequired(). Instead we figured that we do
NOT have to change the document builder factory at all to work with
XML-Security.
Please try out Rampart-1.1 with any of the applicable Axis2 versions
and let us know if you are still having issues.
Right now the only place where we change the dom impl is situations
where we use SAML in the WS-Trust implementation. This is because of
opensaml. We should be able to send a patch to opensaml before the
next release of Rampart to rectify this as well.
Thanks,
Ruchith
On 2/9/07, Yevgeny Rouban <yr...@gmail.com> wrote:
> Hello.
>
> The threading fix committed to the Axiom DOM by Ruchith Fernando [1]
> seems to not resolve the problem.
>
> 1. Imagine two threads enter the method setDOOMRequired(true).
> The faster one calls System.setProperty(systemKey,
> DocumentBuilderFactoryImpl.class.getName()).
> Then the slower thread executes originalDocumentBuilderFactory =
> DocumentBuilderFactory.newInstance(). This time the
> originalDocumentBuilderFactory gets lost, because it becomes
> org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl.
>
> 2. Another way to break the application for two threads is to call
> setDOOMRequired(false) by one thread while the other is in
> DOOMRequired state and is going to get a DocumentBuilderFactory. The
> later thread will get original Document Builder (probably Xerces)
> rather than DOOM because the system wide property is reset by the
> first thread.
>
> I do not know a good fix for the problem other than thread synchronization.
> Another way (a bit clumsy) I see is to remove system property and set
> up a thread context class loader which overrides Jar Service Provider
> Mechanism via getResourceAsStream for
> META-INF/services/javax.xml.parsers.DocumentBuilderFactory. This class
> loader should return
> org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl in
> DOOMRequired state and delegate to the parent class loader in
> non-DOOMRequired state.
>
> [1] http://marc.theaimsgroup.com/?l=axis-user&m=116237867100030&w=2
>
> --
> Yevgeny Rouban
> INTEL Middleware Products Division
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>
--
www.ruchith.org
www.wso2.org
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org
Re: [Axis2-1.0] Rampart/Axoim Threading Issues
Posted by Ruchith Fernando <ru...@gmail.com>.
Hi,
This issue is fixed in Rampart-1.1 which can be used with Axis2-1.1
and Axis2-1.1.1
We are not using the setDOOMRequired(). Instead we figured that we do
NOT have to change the document builder factory at all to work with
XML-Security.
Please try out Rampart-1.1 with any of the applicable Axis2 versions
and let us know if you are still having issues.
Right now the only place where we change the dom impl is situations
where we use SAML in the WS-Trust implementation. This is because of
opensaml. We should be able to send a patch to opensaml before the
next release of Rampart to rectify this as well.
Thanks,
Ruchith
On 2/9/07, Yevgeny Rouban <yr...@gmail.com> wrote:
> Hello.
>
> The threading fix committed to the Axiom DOM by Ruchith Fernando [1]
> seems to not resolve the problem.
>
> 1. Imagine two threads enter the method setDOOMRequired(true).
> The faster one calls System.setProperty(systemKey,
> DocumentBuilderFactoryImpl.class.getName()).
> Then the slower thread executes originalDocumentBuilderFactory =
> DocumentBuilderFactory.newInstance(). This time the
> originalDocumentBuilderFactory gets lost, because it becomes
> org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl.
>
> 2. Another way to break the application for two threads is to call
> setDOOMRequired(false) by one thread while the other is in
> DOOMRequired state and is going to get a DocumentBuilderFactory. The
> later thread will get original Document Builder (probably Xerces)
> rather than DOOM because the system wide property is reset by the
> first thread.
>
> I do not know a good fix for the problem other than thread synchronization.
> Another way (a bit clumsy) I see is to remove system property and set
> up a thread context class loader which overrides Jar Service Provider
> Mechanism via getResourceAsStream for
> META-INF/services/javax.xml.parsers.DocumentBuilderFactory. This class
> loader should return
> org.apache.axiom.om.impl.dom.jaxp.DocumentBuilderFactoryImpl in
> DOOMRequired state and delegate to the parent class loader in
> non-DOOMRequired state.
>
> [1] http://marc.theaimsgroup.com/?l=axis-user&m=116237867100030&w=2
>
> --
> Yevgeny Rouban
> INTEL Middleware Products Division
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>
--
www.ruchith.org
www.wso2.org
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org