You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Andrea Smyth <an...@iona.com> on 2006/11/07 18:39:58 UTC
SequenceTest failing with NAMESPACE_ERR: An attempt is made to create
or change ...
It looks like this is a bug in the JDK - same or similar
to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6467808 - I have a
very simple test case which fails when run with JDK 1.5.0_09 but passes
with JDK 1.5.0_06.
When the child elements of the Header element are removed, things work
fine with JDK 1.5.0_09 also.
Jervis, how did you work around the problem in the
SOAPHandlerInterceptor/SOAPMessageContextImpl earlier?
Andrea.
---
SoapMessageFactoryTest.java: (in separate project with dependencies on
saaj-impl. saaj-api activation and junit only)
package org.apache.cxf.jdkbug;
import java.io.InputStream;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
import junit.framework.TestCase;
public class SoapMessageFactoryTest extends TestCase {
public void testBuildSoapMessage() throws Exception {
InputStream is =
SoapMessageFactoryTest.class.getResourceAsStream("msg4.xml");
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage sm = mf.createMessage(null, is);
SOAPEnvelope env = sm.getSOAPPart().getEnvelope();
assertNotNull(env);
}
}
msg4.xml:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
<wsa:MessageID
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:32dd41e4-fe14-4603-9cee-e918f8d8a346</wsa:MessageID>
<wsa:To
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://localhost:9020/SoapContext/GreeterPort</wsa:To>
<wsa:ReplyTo
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<wsa:Address
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing/none</wsa:Address>
</wsa:ReplyTo>
<wsa:Action
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"></wsa:Action>
<wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
<wsrm:Identifier
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">urn:uuid:b17e5276-32b1-4c18-bc07-bdea1771b951</wsrm:Identifier>
<wsrm:MessageNumber
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">3</wsrm:MessageNumber>
</wsrm:Sequence>
</soap:Header>
<soap:Body>
<greetMeOneWay xmlns:ns2="http://www.w3.org/2005/08/addressing/wsdl"
xmlns="http://cxf.apache.org/greeter_control/types"><requestType>thrice</requestType></greetMeOneWay>
</soap:Body>
</soap:Envelope>
StackTrace:
ERROR: 'NAMESPACE_ERR: An attempt is made to create or change an object
in a way which is incorrect with regard to namespaces.'
[surefire] Running org.apache.cxf.jdkbug.SoapMessageFactoryTest
[surefire] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.191 sec
[surefire]
[surefire]
testBuildSoapMessage(org.apache.cxf.jdkbug.SoapMessageFactoryTest) Time
elapsed: 0.171 sec <<< ERROR!
com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope
from given source:
at
com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:114)
at
com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:71)
at
com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:125)
at
org.apache.cxf.jdkbug.SoapMessageFactoryTest.testBuildSoapMessage(SoapMessageFactoryTest.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.maven.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:242)
at
org.apache.maven.surefire.battery.JUnitBattery.execute(JUnitBattery.java:216)
at org.apache.maven.surefire.Surefire.executeBattery(Surefire.java:215)
at org.apache.maven.surefire.Surefire.run(Surefire.java:163)
at org.apache.maven.surefire.Surefire.run(Surefire.java:87)
at org.apache.maven.surefire.Surefire.run(Surefire.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.maven.surefire.SurefireBooter.main(SurefireBooter.java:785)
Caused by: javax.xml.transform.TransformerException:
org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or
change an object in a way which is incorrect with regard to namespaces.
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:651)
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:281)
at
com.sun.xml.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:390)
at
com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:102)
... 30 more
Caused by: org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made
to create or change an object in a way which is incorrect with regard to
namespaces.
at
com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkDOMNSErr(CoreDocumentImpl.java:2421)
at
com.sun.org.apache.xerces.internal.dom.AttrNSImpl.setName(AttrNSImpl.java:150)
at
com.sun.org.apache.xerces.internal.dom.AttrNSImpl.<init>(AttrNSImpl.java:111)
at
com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createAttributeNS(CoreDocumentImpl.java:2012)
at
com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.createAttributeNS(SOAPDocumentImpl.java:161)
at
com.sun.org.apache.xerces.internal.dom.ElementImpl.setAttributeNS(ElementImpl.java:684)
at
com.sun.xml.messaging.saaj.soap.impl.ElementImpl.setAttributeNS(ElementImpl.java:1213)
at
com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(SAX2DOM.java:134)
at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:205)
at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:524)
at org.xml.sax.helpers.XMLFilterImpl.characters(XMLFilterImpl.java:564)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:570)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanContent(XMLDocumentFragmentScannerImpl.java:1062)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1649)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:588)
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:642)
... 33 more
Re: SequenceTest failing with NAMESPACE_ERR: An attempt is made to
create or change ...
Posted by Andrea Smyth <an...@iona.com>.
Andrea Smyth wrote:
> It looks like this is a bug in the JDK - same or similar to
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6467808 - I have a
> very simple test case which fails when run with JDK 1.5.0_09 but
> passes with JDK 1.5.0_06.
Actually the same workaround applies here, i.e. make sure that no
namespace declaration is ever overwritten (by the same namespace), e.g.
using this message:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsa:MessageID
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:32dd41e4-fe14-4603-9cee-e918f8d8a346</wsa:MessageID>
<wsa:To
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://localhost:9020/SoapContext/GreeterPort</wsa:To>
<wsa:ReplyTo
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/none</wsa:Address>
</wsa:ReplyTo>
<wsa:Action
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">GreetMeOneWay</wsa:Action>
<wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
<wsrm:Identifier>urn:uuid:b17e5276-32b1-4c18-bc07-bdea1771b951</wsrm:Identifier>
<wsrm:MessageNumber>3</wsrm:MessageNumber>
</wsrm:Sequence>
</soap:Header>
<soap:Body>
<greetMeOneWay xmlns:ns2="http://www.w3.org/2005/08/addressing/wsdl"
xmlns="http://cxf.apache.org/greeter_control/types"><requestType>thrice</requestType></greetMeOneWay>
</soap:Body>
</soap:Envelope>
Not sure yet how feasible this is ...
Andrea.