2012-01-24 24 views
5

Chúng tôi đang phát triển nền tảng MDA có hỗ trợ cho Dịch vụ web. Người dùng có thể cung cấp WSDL trong thời gian chạy và chúng tôi tạo tất cả các tạo phẩm (giao diện dịch vụ và triển khai thực hiện cho máy chủ và người tiêu dùng cho máy khách) bằng cách sử dụng JAX-WS trong nội bộ.Xác thực thời gian chạy WSDL với JAX-WS

Chúng tôi muốn thêm xác thực trên tài liệu WSDL do người dùng cung cấp. Ngay bây giờ người dùng phải xác nhận điều đó với một công cụ bên ngoài như Oxygen, XMLSpy hoặc một công cụ web, nhưng chúng tôi muốn thêm nó như là một phần của hệ thống của chúng tôi. Một tính năng rất hay có sẽ là xác nhận hợp lệ lược đồ, bao gồm các lược đồ nhúng của các WSDL.

Trong JAX-WS (RI) có hỗ trợ xác thực lược đồ trong thời gian chạy (sử dụng chú thích @SchemaValidation) nhưng chúng tôi không tìm thấy bất kỳ hỗ trợ nào để xác thực WSDL.

Chúng tôi đã cố gắng tích hợp Eclipse's WSDL validator nhưng có vẻ như nó không hoạt động đối với chúng tôi.

Có cách nào để thực hiện điều này với JAX-WS không? Nếu không, có khung công tác xác thực nào khác mà chúng tôi có thể tích hợp không?

Cảm ơn

Trả lời

2

Có một chút nhầm lẫn trong câu hỏi của bạn mà tôi cần phải làm rõ đầu tiên.

Bạn dường như muốn có khả năng xác thực WSDL (cú pháp + WS-I) và XSD, được nhúng hoặc tham chiếu bên ngoài bởi WSDL. Mặt khác, bạn mang lại @SchemaValidation, thực tế được sử dụng để xác thực các tài liệu cá thể.

Trong phương pháp phát triển truyền thống, người ta có thể nói bạn muốn ít nhất khả năng xác nhận các tạo phẩm thời gian thiết kế (WSDL + XSDs).

Đối với kịch bản này sau đó, tôi muốn giới thiệu như sau:

WSDL: để thử nghiệm tuân thủ WS-I, xin hãy xem tại test tools section of the WS-I site. Nó không phải là rõ ràng như thế nào cấp giấy phép họ có với công cụ kiểm tra của họ sẽ làm việc với bạn, nhưng ít nhất nó sẽ cung cấp cho bạn một ý tưởng cho những gì để xem xét nếu nó không làm việc cho bạn.

CẬP NHẬT: Tài nguyên xác thực WSDL bổ sung: - Eclipse dựa, cách sử dụng bên ngoài Eclipse.

XSD: nếu bạn thực sự cần xác thực riêng cho tệp XSD, mọi thứ có thể trở nên khó khăn cho sản phẩm có chất lượng sản xuất; WSDL4J không có nhiều trợ giúp ở đây và tôi tin rằng XSOM là cách để thực hiện loại công việc này. Bạn phải trích xuất nội dung từ phần loại như một hoặc nhiều tệp XSD (có thể nhiều hơn một tệp XSD, hãy xem một số ví dụ, Microsoft WSDLs của Microsoft đến với tôi như một trường hợp thử nghiệm tốt), gán một uri cơ sở cho mỗi XSD được trích xuất phù hợp với vị trí WSDL, sau đó sử dụng XSOM để xác nhận hợp lệ các vị trí đó.

Vì bạn đang tạo máy khách, bạn có nhiều khả năng không quan tâm đến việc xác nhận hợp lệ, ví dụ như tiêu đề HTTP (SOAP 1.1/HTTP, SOAPAction, nếu nó khớp với định nghĩa hoạt động WSDL). Nếu bạn cuối cùng cũng quan tâm đến điều đó, thì tôi gọi là xác thực thời gian, sau đó tôi sẽ đề xuất bố cục khác trong cách tiếp cận của bạn (nghĩa là tôi sẽ không dựa vào @SchemaValidation mà thực hiện thông qua dịch vụ proxy trong suốt và chung chung)).

+0

Tôi đã đề cập đến @SchemaValidation chỉ để tránh nhầm lẫn giữa xác thực mẫu và lược đồ/wsdl. Tôi đã hỏi, như bạn đã nói, về việc xác nhận các tạo phẩm thời gian thiết kế. Về trang web WS-I, tôi đã xem xét các công cụ và có thể hoạt động nhưng tôi không chắc chắn về việc cấp phép. Giới thiệu về XSD, chúng tôi đã tách chúng ra khỏi WSDL và chúng tôi hỗ trợ nhiều lược đồ được nhúng. Tôi sẽ điều tra làm thế nào để xác nhận những người với XSOM. Và về điểm cuối cùng của bạn, chúng tôi tạo ra các máy chủ tốt và xác thực các tiêu đề đó có thể thú vị. Cảm ơn bạn đã trả lời! – Denian

+1

Vì lý do nào đó, và sau khi xem nhanh tệp cấp phép, có vẻ như ngăn xếp công cụ WS-I không thân thiện với công cụ đóng hoặc thương mại. Tôi muốn chỉ ra rằng để đảm bảo bạn cũng nhìn vào những khía cạnh này. Để xác nhận tiêu đề, tôi đã nhìn thấy các trường hợp khách hàng gửi thân Xà phòng chính xác mà không có SOAPAction đúng. Ngoài ra, cảm ơn bạn đã làm rõ, tôi nghĩ như vậy về @SchemaValidation. –

+0

Có, bạn đã đúng: http://netzooid.com/blog/2006/11/26/is-ws-i-open-look-at-their-test-license/ Tôi nghĩ rằng chúng tôi sẽ phải tìm giải pháp hoặc khuôn khổ khác. Về việc xác thực XSD, tôi đã thử với XSOMParser tạo một ErrorHandler và nó hoạt động tốt. Tôi nghĩ rằng tôi nên để câu hỏi này được mở ra vì mối quan tâm chính là xác thực WSDL, nhưng dù sao cảm ơn rất nhiều cho phản hồi của bạn. – Denian

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