2010-03-22 29 views
7

Tôi cần trình phân tích cú pháp cho WSDL để nhận các tin nhắn, các portTypes, các hoạt động, các ràng buộc, các dịch vụ, ... Tôi hy vọng một số trình phân tích cú pháp đã tồn tại. Vì vậy, bất kỳ hướng dẫn?Cách phân tích WSDL trong Java?

Trả lời

0

Nhiều ngăn xếp dịch vụ web có sẵn.

Hãy xem qua ngăn xếp Metro. Nguồn mở và có sẵn trực tiếp trong Java 6.

+0

Tôi phải tạo người gọi dịch vụ động dựa trên WSDL. Một số hướng làm thế nào để làm điều đó với Metro? – Milan

+0

Tôi cũng cần tạo biểu mẫu động (người gọi dịch vụ), dựa trên WSDL. Hãy tưởng tượng rằng bạn nhận được WSDL và bạn nên tạo biểu mẫu từ nó (các trường đầu vào) và cũng có khả năng gọi ra phép toán đó. Tôi vừa lưu trữ các WSDL. Nó nên được enaugh năng động mà nó có thể làm việc cho bất kỳ WSDL. Tôi hy vọng tôi rõ ràng là enaugh. – Milan

+0

Bạn không hỏi cùng một câu hỏi như http://stackoverflow.com/questions/2491598/create-on-the-fly-web-service-dynamic-web-service-invoker? – nzpcmad

-1

sử dụng http://sourceforge.net/projects/wsdl4j/

public Definition readWSDLFile(String location) throws WSDLException { 
    WSDLReader reader = getWsdlFactoryInstance().newWSDLReader(); 
    reader.setFeature("javax.wsdl.importDocuments", true); 
    return reader.readWSDL(location); 
} 
3

Hope liên kết này sẽ hữu ích cho bạn để lựa chọn một phân tích cú pháp WSDL, Parse WSDL Effectively (nhìn vào kho lưu trữ các liên kết này: Web Archive).

Tôi đã thử sử dụng Apache Woden, WSDL4JMembrane SOA. Apache Woden hoặc Màng SOA sẽ làm tốt.

+1

Liên kết "Phân tích cú pháp WSDL hiệu quả" hiện đã chết. Apache Woden chỉ hỗ trợ WSDL 2.0, không hỗ trợ WSDL 1.1. –

0
f wsdl = ''' 
<definitions name="AgencyManagementService" 
    xmlns:ns1="http://www.example.org/NS1" 
    xmlns:ns2="http://www.example.org/NS2"> 
    <ns1:message name="SomeRequest"> 
     <ns1:part name="parameters" element="SomeReq" /> 
    </ns1:message> 
    <ns2:message name="SomeRequest"> 
     <ns2:part name="parameters" element="SomeReq" /> 
    </ns2:message> 
</definitions> 
''' 

def xml = new XmlSlurper().parseText(wsdl).declareNamespace(ns1: 'http://www.example.org/NS1', ns2: 'http://www.example.org/NS2') 
println xml.'ns1:message'.'ns1:part'.size() 
println xml.'ns2:message'.'ns2:part'.size() 

Hy vọng điều này sẽ hữu ích. Lớp Groovy có thể được gọi từ bất kỳ lớp Java nào khác. Di chuyển tất cả công việc XML sang Groovy :)

Các vấn đề liên quan