2010-09-08 32 views
7

Tôi mới sử dụng dịch vụ web nói chung. Tôi đang cố gắng để viết một khách hàng độc lập Java có thể nhận được một phản hồi từ một webservice.máy khách web java độc lập

Tôi đã thử tìm kiếm SO và Google nhưng giờ đây tôi đã bối rối hơn. Dưới đây là các liên kết tôi đã đi qua rộng rãi.

Tôi có một url như: http://api.something.com/remote/wsdl/SomeEncryptedText

Tôi cũng có một cái gì đó yêu cầu SOAP như:

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
<soap12:Body> 
<AuthUsername>[email protected]</AuthUsername> 
<AuthPassword>mypassword</AuthPassword> 
<Sid>12121</Sid> 
<DynamicProductFeedsRequest xmlns="http://api.something.com/remote/SomeEncryptedText"> 
</DynamicProductFeedsRequest> 
</soap12:Body> 
</soap12:Envelope> 

Với điều này làm thế nào để viết một độc lập Java client mà tôi muốn tích hợp với một số ứng dụng web ở giai đoạn sau?

Từ các tài nguyên được đề cập trước đó, có rất nhiều lựa chọn về phần mềm: SoapUI, WSDL2Java, Apache Axis, Maven Plugin, JAX-WS, Apache CXF.

Tôi đã sử dụng http://www.soapclient.com/soaptest.html trong một trong các câu trả lời SO được đề cập ở trên và tôi có thể nhận tệp html/xml hoàn hảo trên trình duyệt.

Bây giờ tôi đang bối rối về phần mềm nào tôi nên sử dụng? Thông tin trong các liên kết rất ít bit và phần mà tôi không thể tương quan với nhau vì tôi không biết bất cứ điều gì trong SOA.

Có ai vui lòng cho tôi biết các bước cấp cao bằng văn bản một trình khách Java độc lập có yêu cầu URL WSDL và SOAP và cung cấp cho tôi đầu ra của nó không?

Vui lòng cho tôi biết nếu tôi bỏ lỡ bất kỳ thông tin nào.

+0

Sử dụng CXF và làm theo tất cả các bước trong liên kết này http://cxf.apache.org/docs/developing-a-consumer.html – JoseK

Trả lời

10

Câu hỏi này tất cả phụ thuộc vào những điều sau đây:

  • Phiên bản JDK của trình biên dịch Java của bạn.
  • Phiên bản WSDL của bạn (có 1.0, 1.2 và 2.0).

Về cơ bản, nếu bạn đang sử dụng Java annotations để tạo các dịch vụ web, thì bạn sẽ cần thư viện Java Services liên quan đến Java 5 (hỗ trợ chú thích).

Một số bài viết về Sử dụng Java Web Services với các chú thích (JAX-WS):

Tôi sẽ bắt đầu từ việc tạo ra khách hàng dịch vụ Web với Java mà doesn 't chú thích hỗ trợ. Máy khách nổi tiếng tạo WSDL cho Java là Apache Axis (phiên bản cuối cùng được phát hành vào ngày 22 tháng 4 năm 2006). Điều này về cơ bản có một định nghĩa WSDL và tạo ra nó trở lại cho khách hàng. Nó hỗ trợ phiên bản WSDL cũ (1.0) và bị treo nếu bạn sử dụng các phiên bản WSDL mới hơn (1.2 và 2.0).

Điều này về cơ bản, phải mất WSDL của bạn và tạo một Proxy java liên lạc với Dịch vụ Web của bạn. Nó có thể cho phép dựa trên RPC cũng như giao tiếp dựa trên XML.

Đối với Java có hỗ trợ các chú thích có, có hiệu quả, 2 cách để làm điều này:

  • Sử dụng riêng wsimport lệnh Java (thực thi được tìm thấy trong thư mục JDK_HOME/bin/).
  • Sử dụng các thanh bên thứ 3 như Apache Axis 2 (thay thế hiệu quả Apache Axis và hỗ trợ WSDL phiên bản 2.0) hoặc Apache CXF (hỗ trợ WSDL tối đa 1.2).

Để sử dụng wsimport, về cơ bản bạn cần phải đi đến một lệnh shell (hoặc viết một kịch bản) và có hiệu quả làm một cái gì đó của hiệu ứng này:

wsimport -d [outputdir] wsdl_file 

và proxy java của bạn sẽ được tìm thấy trong [outputdir] thư mục.

wsimport được tìm thấy trong JDK 1.6 (Tôi không biết liệu nó có tồn tại trong các phiên bản cũ hơn) hay không. Thêm nguồn herehere.

Đối với Apache Axis, Apache Axis 2 hoặc Apache CXF, có một tệp lớp học WSDL2Java tạo mã nguồn.

Dưới đây là hướng dẫn về cách sử dụng WSDL2Java trong Apache CXF và trong Apache Axis 2.

Tôi hy vọng điều này sẽ giúp bạn theo cách nào đó nhiều như tôi đã bỏ ra như 30 phút nghỉ việc. :-)

+0

Xin chào, Cảm ơn rất nhiều. Theo thứ tự tôi đang tìm hiểu giải pháp của JoseK. Tôi đã có vấn đề với WSDL2Java mà đã cho tôi các lỗi dưới đây; > Lỗi WSDLToJava: Các tệp wpc/Rpc được mã hóa không được hỗ trợ với CXF Đã khắc phục sự cố bằng cách sử dụng giải pháp từ SO. Về cơ bản, tôi đã xóa mã hóa và giờ đã tạo hai tệp 1. RemoteModelDynamicProductFeedsPort.java và 2. RemoteModelDynamicProductFeedsService.java. Cần tiến hành các bước trong liên kết. Tôi cũng sẽ thử bài đăng "The Elite Gentleman" khi bị kẹt. Cảm ơn! Đó là một chi tiết tuyệt vời. – oneworld

+2

@Gentleman, chỉ cần gọi nó là tài liệu về các thực tiễn hiện có và lưu nó ở vị trí bên ngoài trang web, và sếp của bạn sẽ yêu cầu bạn làm lại. –

+0

tôi đã sử dụng các hướng dẫn CFX có ba tập tin được tạo như sau: RemoteModelDynamicProductFeedsPort.java RemoteModelDynamicProductFeedsPort_RemoteModelDynamicProductFeedsPort_Client.java RemoteModelDynamicProductFeedsService.java Và sau đó phát hành: WSDL2Java -ant -Khách hàng -d D: \ experiementals \ webservice-java \ apache-CXF -2.2.10 \ bin -b async_binding.xml wsdlfile.wsdl Không có gì xảy ra. Tôi nghĩ rằng tôi đã tạo ra các cuống và cũng đã thông qua yêu cầu SOAP. Bất kỳ suy nghĩ nào về điều này? Về cơ bản hướng dẫn là đối phó với một số chất liệu phức tạp. Có phải vì tôi đã loại bỏ mã hóa, nó không có gì? – oneworld

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