2011-11-09 17 views
12

उन लोगों के लिए कोई आश्चर्य नहीं है जो वेब-सेवाओं के साथ काम करते हैं, जिन्हें वे समय-समय पर अपडेट करते हैं। और आपको हमेशा इन अद्यतनों के परिवर्तनों को ट्रैक करने की आवश्यकता होती है।एक्सएमएल/डब्ल्यूएसडीएल तुलना उपकरण

मेरे विशेष मामले में मैं डब्ल्यूएसडीएल द्वारा परिभाषित वेब सेवा से निपटता हूं और मुझे इस डब्लूएसडीएल के आधार पर उत्पन्न कक्षाएं मिलती हैं।

लेकिन अद्यतन डब्लूएसडीएल से कक्षाओं के पुनर्जनन से पहले मैं देखना चाहता हूं कि डब्लूएसडीएल में क्या बदला गया था और परिवर्तनों की मात्रा निर्धारित करने के लिए - यह देखने के लिए कि मुझे क्या तैयार किया जाना चाहिए।

दुर्भाग्यवश, यदि मैं केवल नए और पुराने संस्करण की .wsdl फ़ाइलों की तुलना करता हूं तो यह हमेशा एक कारण के लिए बहुत अच्छी तरह से काम नहीं करता है - wsdl सामग्री को फिर से व्यवस्थित किया जा सकता है (आंतरिक रूप से दोहराया जा सकता है)। यही अर्थपूर्ण उपकरण खोजने का कारण है।

मैंने ऑक्सीजन एक्सएमएल डिफ टूल की कोशिश की है लेकिन यह मेरे लिए भी अच्छा काम नहीं करता है।

  • तत्व एक जोड़ा
  • जोड़ा तत्व बी को subelement B7

इस के लिए:

मैं एक उपकरण है जो दो XMLs और मुझे केवल अर्थ मतभेद लाएगा, जैसे रहा हूँ काम करने के लिए मुझे लगता है कि उपकरण को लोड करना चाहिए और ढांचे का गहराई से विश्लेषण करना चाहिए, ऑक्सीजन एक्सएमएल डिफ का यह अच्छा करने का दावा था, लेकिन यह टेक्स्ट फाइल तुलना की एक बेहतर संस्करण है।

क्या आप इसके लिए काम करने की अनुशंसा कर सकते हैं, विशेष रूप से डब्ल्यूएसडीएल के आधार पर वेब-सेवाओं में अपडेट देखने के लिए।

अद्यतन 1: नया विचार WSDLs के बजाय जेनरेट किए गए स्रोतों की तुलना करना है।

धन्यवाद।

उत्तर

13

http://membrane-soa.org उनके SOA Model में एक Java API for comparing WSDL है।

package sample.wsdl; 

import java.util.List; 
import com.predic8.wsdl.*; 
import com.predic8.wsdl.diff.WsdlDiffGenerator; 
import com.predic8.soamodel.Difference; 

public class CompareWSDL { 

    public static void main(String[] args) { 
    compare(); 
    } 

    private static void compare(){ 
    WSDLParser parser = new WSDLParser(); 

    Definitions wsdl1 = parser.parse("resources/diff/1/article.wsdl"); 

    Definitions wsdl2 = parser.parse("resources/diff/2/article.wsdl"); 

    WsdlDiffGenerator diffGen = new WsdlDiffGenerator(wsdl1, wsdl2); 
    List<Difference> lst = diffGen.compare(); 
    for (Difference diff : lst) { 
     dumpDiff(diff, ""); 
    } 
    } 

    private static void dumpDiff(Difference diff, String level) { 
    System.out.println(level + diff.getDescription()); 
    for (Difference localDiff : diff.getDiffs()){ 
     dumpDiff(localDiff, level + " "); 
    } 
    } 
} 

आप उत्पादन 2. सूची में दिखाया पाने को क्रियान्वित करने के बाद यह दो डबल्यूएसडीएल दस्तावेज़ों के बीच मतभेदों की एक सूची है।

Port ArticleServicePTPort removed. 
Port ArticleServicePTPort2 added. 
Operation create removed. 
Operation create2 added. 
Schema http://predic8.com/wsdl/material/ArticleService/1/ has changed: 
    Element createResponse has changed: 
    ComplexType has changed: 
     Sequence has changed: 
     Element NewElementForTest added. 

उपकरण से उत्पादन का एक उदाहरण के लिए, http://www.service-repository.com/ एक online WSDL Comparator tool कि दो डबल्यूएसडीएल के बीच मतभेद की एक रिपोर्ट से ये प्रदान करता है। रिपोर्ट एक साधारण एक्सएमएल diff नहीं है।

+1

एसओए मॉडल के संस्करण 1.3 के बाद से आप कमांडलाइन टूल से रिपोर्ट जेनरेट कर सकते हैं। देखें: http://www.membrane-soa.org/soa-model-doc/1.3/cmd-tool/wsdldiff-tool.htm मैं यह खुलासा करना चाहता हूं कि मैं एसओए मॉडल प्रोजेक्ट का सदस्य हूं । – baranco

+0

यह अच्छा है, लेकिन पूरी समस्या को हल नहीं करता है। उदाहरण के लिए, एक नया तत्व किस अनुरोध और प्रतिक्रियाओं को प्रभावित करता है? यह कहना मुश्किल है, और यह एक महत्वपूर्ण सवाल है। –

3

यह केवल आंशिक समाधान हो सकता है लेकिन आप SOAPui में पुराने और नए डब्लूएसडीएल का विश्लेषण कर सकते हैं।

आपको जेनरेट की गई विधियों और उदाहरण अनुरोधों से बताने में सक्षम होना चाहिए कि यह किस तरह से बदल गया है या नहीं।

आशा है कि कुछ मदद

+0

मुझे सोपाई पसंद नहीं है, इसका इंटरफ़ेस इतना बदसूरत है और यह बहुत खराब काम करता है। मुझे विशेष रूप से मैक मंच पर इसके साथ बहुत बुरा अनुभव हुआ है। – Vladimir

+0

इसके अलावा आपका विचार अच्छा है। मैंने पहले ही सोचा था कि मैं जेनरेट किए गए वर्गों के स्रोतों की तुलना कर सकता हूं जो बिना सोपाई के मेरे लिए काम कर सकते हैं। – Vladimir

संबंधित मुद्दे