2011-11-09 6 views
12

웹 서비스를 자주 사용하는 사람들은 수시로 업데이트됩니다. 그리고 항상 이러한 업데이트의 변경 사항을 추적해야합니다.XML/WSDL 비교 도구

필자는 WSDL로 정의 된 웹 서비스를 다루고이 WSDL을 기반으로 생성 된 클래스를 얻는다.

업데이트 된 WSDL에서 클래스를 다시 생성하기 전에 WSDL에서 변경된 사항을 확인하고 변경 사항을 결정하고 싶습니다. 무엇을 준비해야하는지 확인하고 싶습니다.

불행히도 새로운. 구 버전의 .wsdl 파일을 비교하면 wsdl 내용을 재정렬 (내부적으로 리팩터링) 할 수있는 이유가 있습니다. 이것이 의미 론적 도구를 찾는 이유입니다.

Oxygen XML Diff 도구를 사용해 보았지만 잘 작동하지 않습니다.

  • 요소 A는이를 위해
  • 추가 된 요소 B에 하위 요소의 B7

추가 :

나는 두 XMLS을 만 의미 차이 날을 가져올 수있는 도구, 예를 찾고 있어요 나는 도구가로드해야하고 구조를 깊이 분석해야한다고 생각합니다. Oxygen XML Diff는 그것을 잘 수행한다고 주장했지만 텍스트 파일 비교의 개선 된 버전입니다.

특히 WSDL을 기반으로하는 웹 서비스의 업데이트를 확인하는 것이 좋습니다.

업데이트 1 : 새로운 아이디어는 WSDL 대신 생성 된 소스를 비교하는 것입니다.

감사합니다.

답변

13

http://membrane-soa.org에게 있습니다

희망은 SOA ModelJava 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. 목록에 표시된 출력을 얻을 실행 한 후에는 두 WSDL 문서 사이의 차이의 목록입니다. 도구의 출력 예를 들어

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/ 두 WSDL의 차이점에 대한 보고서를 반환하는 online WSDL Comparator tool을 제공합니다. 이 보고서는 단순한 XML 비교가 아닙니다.

+1

SOA 모델 버전 1.3부터는 명령 행 도구에서 보고서를 생성 할 수 있습니다. 참조 : http://www.membrane-soa.org/soa-model-doc/1.3/cmd-tool/wsdldiff-tool.htm 저는 SOA Model 프로젝트의 구성원임을 공개하고 싶습니다. . – baranco

+0

이것은 멋지지만 전체적인 문제를 해결하지는 못합니다. 예를 들어, 새로운 요소는 어떤 요청과 응답에 영향을 미칩니 까? 이것은 말하기 어렵고, 이것은 중요한 질문입니다. –

3

이것은 부분적인 해결책 일 수도 있지만 이전 WSDL과 새 WSDL을 SOAPui으로 분석 할 수 있습니다.

생성 된 메서드 및 예제에서 형식이나 메서드 중 무엇이 변경되었는지 요청할 수 있어야합니다. 도움

+0

SOAPUI가 싫어서 인터페이스가 너무 추해서 너무 나빠요. 특히 Mac 플랫폼에서 매우 좋지 않은 경험을했습니다. – Vladimir

+0

게다가 당신의 생각은 좋다. 나는 이미 SOAPui없이 나를 위해 작동 할 수있는 생성 된 클래스의 소스를 비교할 수 있다고 생각했다. – Vladimir