Hi, thanks for your answer. I thought about an axis2 problem... In the moment I check alle nodes to be sure to handle and Element. What do I have to change to use the mini-servlet? Just some changes in the muse.xml and the used librares? I don't have to change my capability-implementation, do I? By using the mini-servlet I don't use any Axis2 components? Which xml-parser will be used? Tx, Christian
Mittwoch, 31. Januar 2007 17:45 To: [email protected] cc: From: Daniel Jemiolo <[EMAIL PROTECTED]> Subject: Re: Empty nodes as result of queryResourceProperties() okay, I've looked into the QueryRP implementation, and here's what I've found: 1. The WSRP doc that the XPath query is executed against is all Elements - I expected this given that the WSRP doc is retrieved using GetResourcePropertyDocument(), which uses XmlUtils.getElement*() methods to ensure that it only accesses DOM Element objects (we'd see ClassCastExceptions if this weren't the case). 2. Even if your XPath were off, and it was matching empty text nodes, there aren't any text nodes to match *at the time of the query*. 3. There are empty text nodes by the time you receive the message on the client. This led me to guess that the empty nodes were inserted either by the DOM-to-Axiom conversion (Axis2 uses Axiom for all of its XML/SOAP manipulation). My tests show that this is the case - for every element in a DOM (including the root), a text node is added. The class that is converting the XML to Axiom is org.apache.axiom.om.impl.builder.StAXOMBuilder. I'm not really sure what to do about this. I guess I could update the AxisEnvironment.convertToAxiom() method to look through the SOAP message and delete all empty text nodes. I'm not sure what a full tree search would do to performance, and we're already taking a hit in the DOM -> Axiom conversion, so let's try to avoid this for now. So, two workarounds, depending on your scenario: 1. Add a client-side check to make sure your Nodes are indeed Elements. or 2. Try using the -mini flag from wsdl2java to get the Mini SOAP engine. It's a simple SOAP servlet that doesn't do any XML conversion before putting your response on the wire. It's meant to be for J2ME users, but it'll work on J2SE as well. Christian Ewers <[EMAIL PROTECTED]> wrote on 01/31/2007 03:53:33 AM: > > Hi, > the nodes text is just a string of blanks. > > I call these mothods for each node: > System.out.println((i++)+" > \n"+node.getNodeName()+"\n"+XmlUtils.toString(node)); > System.out.println("##"+node.getNodeValue()+"##"); > > > > 0 > #text > > > ## > ## > 1 > wsrf-sg:MemberServiceEPR > <?xml version="1.0" encoding="UTF-8"?> > <wsrf-sg:MemberServiceEPR > xmlns:wsrf-sg="http://docs.oasis-open.org/wsrf/sg-2"> > <wsa:Address > xmlns:wsa="http://www.w3.org/2005/08/addressing">http://localhost: > 8080/DefaultService/services/PAIResource</wsa:Address> > <wsa:ReferenceParameters > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > <muse-wsa:ResourceId > xmlns:muse-wsa="http://ws.apache.org/muse/addressing">uuid:c024ffdd-eb1a- > f923-6faf-9cfaa551ec55</muse-wsa:ResourceId> > </wsa:ReferenceParameters> > </wsrf-sg:MemberServiceEPR> > > ##null## > 2 > #text > > > ## > ## > > > > Dienstag, 30. Januar 2007 16:22 > To: [email protected] > cc: > From: Daniel Jemiolo <[EMAIL PROTECTED]> > Subject: Re: Empty nodes as result of queryResourceProperties() > > > hmmm. I'm not an XPath expert, but it looks like a bug. What do the text > nodes say? (can you send the values from getNodeValue()?) > > > > Christian Ewers <[EMAIL PROTECTED]> wrote on 01/30/2007 10:07:57 AM: > > > > > Hi, > > > > I'm using the queryResourceProperties() method to get idle resources > from a > > ServiceGroup. > > My xpath-query is: (sg is the ServiceGroupClient) > > > > Node[] eprs = > > > sg.queryResourceProperties("/wsrf-sg:ServiceGroupRP/wsrf-sg:Entry[./wsrf-sg: > > Content/muws2:OperationalStatus > > = > > > 'Available']/wsrf-sg:MemberServiceEPR[contains(./wsa:Address,'WSResource')]", > > "http://www.w3.org/TR/1999/REC-xpath-19991116"); > > > > > > When their aren't any resources availaibe, the result is an correct > empty > > node-array. When there are available resources I get them but I get > > additional "#text"-nodes for each "real" result. > > For example, when I have one idle resource I get the following result > for > > the following loop > > > > for (Node node : eprs) { > > System.out.println((i++)+" > > \n"+node.getNodeName()+"\n"+XmlUtils.toString(node)); > > } > > > > ----- log----- > > 0 > > #text > > > > > > 1 > > wsrf-sg:MemberServiceEPR > > <?xml version="1.0" encoding="UTF-8"?> > > <wsrf-sg:MemberServiceEPR > > xmlns:wsrf-sg="http://docs.oasis-open.org/wsrf/sg-2"> > > <wsa:Address > > xmlns:wsa="http://www.w3.org/2005/08/addressing">http://localhost: > > 8080/DefaultService/services/PAIResource</wsa:Address> > > <wsa:ReferenceParameters > > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > > <muse-wsa:ResourceId > > xmlns:muse-wsa="http://ws.apache.org/muse/addressing">uuid:701e1d9b- > > fb93-93fc-6242-20de49fa9fba</muse-wsa:ResourceId> > > </wsa:ReferenceParameters> > > </wsrf-sg:MemberServiceEPR> > > > > 2 > > #text > > ------end log------ > > > > Does my query result in some empty elements, or is this a bug? > > > > Regards, > > Christian > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
