Làm cách nào tôi có thể truy cập các phương pháp được hiển thị trong tệp .wsdl
bằng Java? Ngoài ra, các bước liên quan đến việc viết một máy khách Java và tiêu thụ các dịch vụ web là gì?Làm thế nào để viết một máy khách Java để truy cập tệp WSDL?
Trả lời
Tôi khuyên bạn nên bắt đầu với Trình khám phá dịch vụ web trong Eclipse Java EE. Điều này cho phép bạn điều tra bất kỳ dịch vụ web nào được cung cấp cho WSDL.
Hướng dẫn chuyển đổi WSDL sang Java tùy thuộc vào thư viện dịch vụ web bạn muốn sử dụng. Nếu bạn sử dụng Java 6, ngăn xếp Metro được tích hợp.
Bạn sẽ cần tạo một proxy Java từ Tệp WSDL. Bạn có thể thực hiện việc này bằng cách sử dụng Apche CXF hoặc Apache Axis/Axis2 để tạo Java Proxy/Java Client.
Trong Java 6, bạn cũng có thể tạo ứng dụng khách java. Trên JDK/bin có wsimport để tạo ứng dụng Dịch vụ web hoặc trong Axis, có WSDL2Java thực hiện điều tương tự như wsimport.
Ngoài The Elite Gentleman's answer, sau đây là các bước của tôi, tôi sử dụng thành công để tạo ra các lớp học để có thể sử dụng webservice: Command:
wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
Giải thích:
- '-Xnocompile' ngăn chặn thế hệ các tệp .class
- '-keep' đảm bảo rằng các tệp Java được tạo sẽ không bị xóa (theo mặc định, chỉ các tệp .class còn lại)
- '-b' chỉ định tệp cấu hình ràng buộc. Điều này là cần thiết! (xem bên dưới)
Tôi gặp sự cố là các lớp Java chứa các lớp bao bọc JAXBElement<Type>
. Vì vậy, thay vì một thành viên lớp học của loại String
, tôi sẽ nhận được loại JAXBElement<String>
, đó là khủng khiếp để sử dụng. Với -b
switch cho wsimport
và binding.xml
tập tin sau đây, bạn sẽ có được loại đúng:
<jaxb:bindings version="2.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings>
<jaxb:globalBindings generateElementProperty="false" />
</jaxb:bindings>
</jaxb:bindings>
Tôi hy vọng điều này sẽ giúp. wsimport
sau đó tạo tất cả các lớp bạn cần cũng như một lớp chứa các phương thức cho tất cả các phương thức của dịch vụ web của bạn.
Theo mặc định, các phương pháp này không có thời gian chờ đọc (nói các vấn đề về mạng khi yêu cầu ...), xem here cho câu hỏi tôi đã quay lại sau đó.
Tôi sẽ xem xét việc tạo IDE để tự động tạo mọi thứ.
Trong Netbeans, các bước:
Kích chuột phải vào dự án của bạn, nhấp vào "thêm Web Service Client", nhập url WDSL và nhấn Finish.
Thao tác này sẽ tự động tạo proxy Java cho bạn.
Để triển khai ứng dụng khách trong mã của bạn, hãy kéo và drog phương thức được yêu cầu (nằm trong Tài liệu tham khảo dịch vụ web trong dự án của bạn), vào mã của bạn.
+1 Tôi sắp giới thiệu nó. NetBeans trong trường hợp này làm cho nó tầm thường. – Rekin
soapUI là một trong những phần mềm cho phép bạn dễ dàng truy cập vào thế giới WSDL/SOAP. Bạn có thể tạo các yêu cầu SOAP với các giá trị thử nghiệm được gửi đến máy chủ. Bạn cũng có thể xem phản hồi SOAP của máy chủ. Điều này sẽ cho phép bạn hiểu thêm một chút về WSDL/SOAP. Để tạo mã java từ wsdl, hãy xem các đề xuất ở trên.
Sử dụng wsimport -keep
sẽ cung cấp cho bạn tất cả các lớp học. Sau đó viết một lớp dịch vụ khác và sao chép tất cả các phương thức từ lớp dịch vụ được tạo ra. Vượt qua lớp dịch vụ của riêng bạn để wsgen -keep -p
. Nó sẽ cung cấp cho bạn các lớp wrapper cần thiết (jax-ws) mà bạn sẽ quay trở lại từ các phương thức yêu cầu ủy nhiệm của bạn.
Điều này hiện đơn giản khi sử dụng IDE của bạn. Cho phép lấy netbeans như mẫu của chúng tôi.
- mở NetBeans
- tạo một dự án mới bằng cách nhấn vào tập tin và chọn dự án
- mới chọn một java thuộc thể loại và java ứng dụng dưới các ứng dụng
- nhấp chuột phải project vừa tạo và chọn mới và chọn web dịch vụ khách hàng.
Netbeans sẽ yêu cầu một WSDL và khách hàng vị trí
[wsdl và khách hàng vị trí] [1]
[1]: https://i.stack.imgur.com/yWQZv.png
chọn WSDL và nhập URL vào của địa điểm WSDL
nhấp vào kết thúc và tất cả các phương pháp sẽ được tạo cho bạn
Nhiệm vụ của bạn từ đây là gọi các phương thức và chuyển các tham số
- 1. Làm thế nào để tạo một máy khách Java cho Dịch vụ Web?
- 2. Làm thế nào để viết một máy chủ xoắn mà cũng là một khách hàng?
- 3. Phương pháp nào tồn tại để tự động tạo ra các nhánh máy khách java từ các tệp WSDL?
- 4. Làm thế nào để truy cập Java Enum trong ColdFusion?
- 5. Làm thế nào để tạo một máy khách web dịch vụ CXF với điểm cuối động?
- 6. Một cách để truy cập Git mà không cần cài đặt phần mềm máy khách? (Truy cập web có sẵn?)
- 7. Làm cách nào để thay đổi quyền truy cập tệp?
- 8. Làm thế nào để viết hoặc đóng gói một máy chủ Git như một Java Servlet hoặc Java webapp?
- 9. Trong java, làm thế nào để bạn viết một java.awt.image.BufferedImage vào một tệp png 8-bit?
- 10. Làm thế nào để truy cập localStorage trong node.js?
- 11. truy cập máy chủ websocket golang với máy khách nodejs
- 12. Làm thế nào để bắt buộc viết một phần để kiểm tra máy chủ mạng
- 13. Làm cách nào để tôi viết một ứng dụng web node.js với cả mã phía máy chủ và máy khách?
- 14. máy khách web java độc lập
- 15. Làm thế nào để bạn viết một máy chủ OAuth2 trong Perl?
- 16. Làm cách nào để truy xuất ISP của khách truy cập thông qua PHP?
- 17. Làm thế nào để truy cập/ping một máy chủ đặt trên AWS?
- 18. Làm thế nào để phát hiện quyền truy cập tệp khi trích xuất tệp tar?
- 19. Làm cách nào để truy cập Kinect bằng Java?
- 20. Làm thế nào để genearte JSON trên máy khách
- 21. Thay thế cho mẫu khách truy cập?
- 22. Làm cách nào để truy cập tệp trong gói OSGi?
- 23. Làm cách nào để người dùng tải xuống tệp ở phía máy khách (Google Web Toolkit)
- 24. Làm thế nào để cài đặt oAuth nếu tôi không thể truy cập máy chủ?
- 25. Làm cách nào để sử dụng scp để sao chép tệp từ máy chủ sang phía máy khách?
- 26. Tạo ứng dụng khách dịch vụ web với một wsdl đã biết nhưng không thể truy cập được
- 27. Có một api java để truy cập bugzilla không?
- 28. Làm thế nào để bạn truy cập ARGV trong Mathematica?
- 29. Làm thế nào để truy cập webcam với Javascript
- 30. Có cách nào để phân biệt khách truy cập iPhone 3G/S với khách truy cập iPhone 4 không?
Cách sử dụng tệp wsipmort.exe? – sarah
Nhấp vào liên kết trên 'wsimport' và có giải pháp cho nó. –