Jeff,
thanks for your help! Your code works.
Now I receive an exception while using StAXSOAPModelBuilder:
// this works now (I tested the output)
XMLStreamReader xmlr = xmlif.createXMLStreamReader(new StringReader(new
String(data)));
// this not ...
StAXBuilder builder = new StAXSOAPModelBuilder(xmlr);
//StAXBuilder builder = new StAXSOAPModelBuilder(xmlr, null);
// ... and leads to this Exception:
java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Unknown Source)
at java.util.regex.Matcher.reset(Unknown Source)
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at
org.apache.axis2.om.impl.llom.OMAttributeImpl.<clinit>(OMAttributeImpl.java:
52)
What do I have to change?
Thanks again for help,
Chris
P.S. The whole code fragment and exception is listed below
-#- <Code> -------------------------------------------------------------#--
// Copy the data from udp packet, remove zero-bytes and restore SOAP
byte[] buffer = packet.getData();
byte[] data = new byte[findZeroByte(0, buffer)];
System.arraycopy(buffer, 0, data, 0, data.length);
// Init. XMLInputFactory instance
if (xmlif == null) {
initXMLInputFactory();
}
// Convert SOAP-bytes to stream, build SOAPModel && extract SOAPEnvelope
XMLStreamReader xmlr = null;
try {
xmlr = xmlif.createXMLStreamReader(new StringReader(
new
String(data)));
//StAXBuilder builder = new StAXSOAPModelBuilder(xmlr, null);
StAXBuilder builder = new StAXSOAPModelBuilder(xmlr);
SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
...
-#- </Code> -------------------------------------------------------------#--
-#- <Exception> ---------------------------------------------------------#--
java.lang.ExceptionInInitializerError
at
org.apache.axis2.om.impl.llom.OMElementImpl.addAttribute(OMElementImpl.java:
464)
at
org.apache.axis2.om.impl.llom.builder.StAXBuilder.processAttributes(StAXBuil
der.java:126)
at
org.apache.axis2.soap.impl.llom.builder.StAXSOAPModelBuilder.constructNode(S
tAXSOAPModelBuilder.java:278)
at
org.apache.axis2.soap.impl.llom.builder.StAXSOAPModelBuilder.createOMElement
(StAXSOAPModelBuilder.java:166)
at
org.apache.axis2.soap.impl.llom.builder.StAXSOAPModelBuilder.next(StAXSOAPMo
delBuilder.java:302)
at
org.apache.axis2.om.impl.llom.OMElementImpl.getNextSibling(OMElementImpl.jav
a:268)
at
org.apache.axis2.om.impl.llom.traverse.OMChildrenQNameIterator.hasNext(OMChi
ldrenQNameIterator.java:74)
at
org.apache.axis2.om.impl.llom.OMElementImpl.getFirstChildWithName(OMElementI
mpl.java:232)
at
org.apache.axis2.soap.impl.llom.SOAPEnvelopeImpl.getHeader(SOAPEnvelopeImpl.
java:58)
at
org.apache.axis2.soap.impl.llom.builder.StAXSOAPModelBuilder.parseHeaders(St
AXSOAPModelBuilder.java:129)
at
org.apache.axis2.soap.impl.llom.builder.StAXSOAPModelBuilder.<init>(StAXSOAP
ModelBuilder.java:92)
at
de.iken.test.UDP.axis2.UDPWorkerTest.doWork(UDPWorkerTest.java:55)
at
org.apache.axis2.util.threadpool.ThreadWorker.run(ThreadWorker.java:34)
Caused by: java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Unknown Source)
at java.util.regex.Matcher.reset(Unknown Source)
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at
org.apache.axis2.om.impl.llom.OMAttributeImpl.<clinit>(OMAttributeImpl.java:
52)
... 13 more
-#- </Exception> --------------------------------------------------------#--
-----Ursprüngliche Nachricht-----
Von: Jeff Greif [mailto:[EMAIL PROTECTED]
Gesendet: Samstag, 13. August 2005 15:56
An: [email protected]
Betreff: Re: AXIOM-SOAP-Problem
I think you can do this:
String data = new String(packet.getData());
StringReader sr = new StringReader(data);
XMLStreamReader xmlReader
= XMLInputFactory.newInstance().createXMLStreamReader(sr);
Jeff
[EMAIL PROTECTED] wrote:
>Hi all,
>
>I've got a question about AXIOM and SOAP:
>
>If I like to have the SOAPEnvelope from a stream, I can do it like this:
>
>//create the SOAP Envelope
>Reader in = new InputStreamReader(socket.getInputStream());
>XMLStreamReader xmlreader =
>XMLInputFactory.newInstance().createXMLStreamReader(in);
>StAXBuilder builder = new StAXSOAPModelBuilder(xmlreader, null);
>SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
>
>
>
>But if I've already stored the soap-text in a String ...
>
>// copy the data from udp packet
>byte[] buffer = packet.getData();
>String data = new String(buffer);
>
>... then there is the problem that the string 'data' must be converted in a
>stream to use XMLStreamReader and StAXSOAPModelBuilder. Is this the only
>solution?
>
>
>In the JavaDoc of StAXOMBuilder is written that StAXOMBuilder will build a
>generic memory model from any XML input source, such as a file, string,
>stream, etc..
>
>How it works for files and streams is clear, but how does it look like for
>strings???
>
>I need this for a UDPTransportListener.
>
>
>
>Thanks for any help,
>Chris
>
>
>
>