dev@jax-ws.java.net

Re: Prefix cannot be null

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Fri, 18 Aug 2006 13:57:47 +0200

Hi Arun,

This is a problem in streambuffer and the StreamWriterBufferProcessor.

Elements with default namespace declarations were being written
incorrectly i.e. without a prefix and SJSXP did not know how to bind the
namespace of the element.

A fix is committed and the new jars are in JAX-WS rearch-2005 branch.

Paul.

Arun Gupta wrote:
> For the following response message received at the client:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
> <S:Header>
> <To
> xmlns="http://www.w3.org/2005/08/addressing">http://www.w3.org/2005/08/addressing/anonymous</To>
>
> <Action
> xmlns="http://www.w3.org/2005/08/addressing">http://example.com/AddNumbersPortType/addNumbersResponse</Action>
>
> </S:Header>
> <S:Body>
> <addNumbersResponse xmlns="http://example.com/">
> <return>20</return>
> </addNumbersResponse>
> </S:Body>
> </S:Envelope>
>
> I'm getting the following exception only if logging is turned on:
>
> javax.xml.stream.XMLStreamException: Prefix cannot be null
> at
> com.sun.xml.stream.writers.XMLStreamWriterImpl.writeStartElement(XMLStreamWriterImpl.java:1288)
>
> at
> com.sun.xml.stream.writers.XMLStreamWriterImpl.writeStartElement(XMLStreamWriterImpl.java:1266)
>
> at
> javanet.staxutils.StreamWriterDelegate.writeStartElement(StreamWriterDelegate.java:115)
>
> at
> javanet.staxutils.IndentingXMLStreamWriter.writeStartElement(IndentingXMLStreamWriter.java:209)
>
> at
> com.sun.xml.stream.buffer.stax.StreamWriterBufferProcessor.writeFragmentNoEx(StreamWriterBufferProcessor.java
>
> :261)
> at
> com.sun.xml.stream.buffer.stax.StreamWriterBufferProcessor.writeFragment(StreamWriterBufferProcessor.java:124
>
> )
> at
> com.sun.xml.stream.buffer.stax.StreamWriterBufferProcessor.process(StreamWriterBufferProcessor.java:55)
>
> at
> com.sun.xml.stream.buffer.XMLStreamBuffer.writeToXMLStreamWriter(XMLStreamBuffer.java:219)
>
> at
> com.sun.xml.ws.message.stream.StreamHeader.writeTo(StreamHeader.java:219)
> at
> com.sun.xml.ws.message.stream.StreamMessage.writeEnvelope(StreamMessage.java:240)
>
> at
> com.sun.xml.ws.message.stream.StreamMessage.writeTo(StreamMessage.java:223)
> at com.sun.xml.ws.util.pipe.DumpPipe.dump(DumpPipe.java:111)
> at com.sun.xml.ws.util.pipe.DumpPipe.process(DumpPipe.java:95)
> at
> com.sun.xml.ws.addressing.WsaClientPipe.process(WsaClientPipe.java:59)
> at
> com.sun.xml.ws.protocol.soap.ClientMUPipe.process(ClientMUPipe.java:58)
> at com.sun.xml.ws.handler.HandlerPipe.process(HandlerPipe.java:107)
> at com.sun.xml.ws.handler.HandlerPipe.process(HandlerPipe.java:107)
> at com.sun.xml.ws.client.Stub.process(Stub.java:123)
> at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:122)
> at
> com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:238)
>
> at
> com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:212)
>
> at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:105)
> at $Proxy27.addNumbers(Unknown Source)
>
> If message dump is not turned on, then the test passes. This is in the
> MR branch (mr-21) of JAX-WS. I do have the latest streambuffer.jar from
> rearch-2005.
>
> Thanks,
> -Arun
>
>

-- 
| ? + ? = To question
----------------\
    Paul Sandoz
         x38109
+33-4-76188109