private static ServiceDescriptor getServiceDescriptor(Element descElement) throws ServiceParseException {
      
      ServiceDescriptor desc = new ServiceDescriptor();
      
      NodeList childNodes = descElement.getChildNodes();
      for(int i=0;i<childNodes.getLength();i++) {
         Node node = childNodes.item(i);
         if(node.getNodeType() == Node.ELEMENT_NODE) {
            if(((Element)node).getNodeName().equals("interface")) {
               Node textNode = node.getFirstChild();
               if(textNode != null) desc.setInterfaceName(textNode.getNodeValue());
            }
            
            if(((Element)node).getNodeName().equals("impl")) {
               Node textNode = node.getFirstChild();
               if(textNode != null) desc.setImplName(textNode.getNodeValue());
            }
         }
      }
      
      if(desc.getInterfaceName() != null) {
         return desc;
      }
      else {
         throw new ServiceParseException("service descriptor element does not contain interface name");
      }
   }