2010-10-07 28 views
11

Sự khác nhau, triết học hoặc cách khác là gì giữa việc gọi dịch vụ web từ mã Java bằng cách sử dụng các lớp Dịch vụ và Công văn, so với lớp SOAPConnection?JAX-WS vs SAAJ Style, sử dụng

Ví dụ, một cái gì đó như thế này:

SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance(); 
SOAPConnection soapConnection = scf.createConnection(); 
SOAPMessage reply = soapConnection.call(soapMessage, url); 

vs một cái gì đó gần như cùng những dòng này?

svc = Service.create(url, serviceName); 
Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName, SOAPMessage.class, service.Mode.MESSAGE); 
SOAPMessage reply = (SOAPMessage)dispatch.invoke(soapMessage); 

Sự khác nhau giữa những điều này là gì và tại sao chọn một phương pháp tiếp cận khác?

Trả lời

1

Tôi có cảm giác rằng ở cuối, công văn chỉ ủy nhiệm các hành động cho một lớp SAAJ. Tuy nhiên, tôi đã không thể xác nhận điều đó.

Từ quan điểm thực hành tốt hơn, thì tôi cảm thấy phương pháp Dispatch phù hợp hơn vì nó tóm tắt một số chi phí làm việc với API SAAJConnection cấp thấp hơn. Giống như - không cần phải thực hiện gần() trên cá thể kết nối, tham chiếu công văn không cần phải được tạo lại không giống như cá thể SOAPConnection.

+0

Bạn có nghĩa;. Saaj là cấp thấp hơn có nghĩa là bạn có thể spesific hơn nhưng bạn phải để viết nhiều thứ nhưng JAXWS đơn giản hơn nhưng bạn không thể trở nên spesific hơn? – PeerNet

3

Các dòng sau là đoạn trích từ Java SOA Cookbook -. O'Reilly

"Kết nối SOAP cho phép bạn gửi một thông điệp SOAP tới một tài nguyên ở phần cuối của URL Đây là thuận tiện để sử dụng trong bất kỳ tình hình, nhưng cần thiết nếu dịch vụ đó không có một WSDL được xác định. Đó là bởi vì việc gọi Service.create yêu cầu phải đi qua địa chỉ của WSDL. nhưng điều đó xảy ra và bạn sẽ được chuẩn bị.

Để tạo kết nối với dịch vụ web hoạt động es không hiển thị WSDL, bạn có thể sử dụng lớp SOAPConnection để liên lạc trực tiếp với tài nguyên từ xa. Sau đó, bạn tạo một đối tượng URL đại diện cho tài nguyên (servlet) từ xa mà bạn muốn gọi. Vượt qua thông điệp yêu cầu SOAP và điểm cuối bạn muốn gọi phương thức gọi trên đối tượng kết nối của bạn, sau đó đợi nó để trả về phản hồi SOAP.

• URL endpoint truyền cho phương thức connection.call có thể là một chuỗi hoặc một java.net.URL "

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