Tôi đến từ C# vì vậy tôi nhận ra rằng tôi không thể mong đợi rất nhiều tính năng và khả năng sử dụng (tuyệt vời) có trong Java, nhưng gần đây tôi đã đưa vào dự án Java này và tôi chỉ đơn giản là không thể hình dung ra điều này. Trong C#/.NET làm cho các lớp proxy dịch vụ web và các hợp đồng dữ liệu được tạo ra là pie nhưng vì một lý do nào đó việc thực hiện Java các dịch vụ web dường như không đúng với tôi.Làm cách nào để bao gồm WSDL được đóng gói để sử dụng với các lớp Java được tạo bằng wsimport?
Đây là thỏa thuận ...
tôi sử dụng wsimport để tạo ra các tập tin được tạo từ các tập tin java .wsdl. Ví dụ ...
"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin ".\wsdl\MyWSDL.wsdl"
Tôi nhận thấy rằng đây mã hóa cứng (gõ cụm từ mà gần như làm tôi nôn chỉ là bây giờ) "wsdlLocation" như vị trí hiện tại của wsdl ("C: \ Users \ ME \ etc \ wsdl \ MyWSDL.wsdl "). Vì vậy, tôi lấy nó ra:
"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin -wsdllocation "NULL" ".\wsdl\MyWSDL.wsdl"
Bây giờ khi tôi nhanh chóng một dịch vụ được tạo ra ...
MyService xyz = new MyService();
tôi nhận được một lỗi. Một cái gì đó dọc theo dòng "không thể tìm thấy tập tin C: \ blahblah \ Temp \ NULL". OK ... quay lại bảng vẽ. Sau khi điều tra điều này một chút, tôi tìm thấy một bài đăng ở đây trên Stack Overflow đã nói về việc sử dụng "classpath: META-INF/WSDL.wsdl" là vị trí wsdl.
"%JAVA_HOME%\bin\wsimport" ... -wsdllocation "classpath:WSDLs/MyWSDL.wsdl" ".\wsdl\MyWSDL.wsdl"
copy ".\wsdl\*" .\bin\WSDLs
cd bin
"%JAVA_HOME%\bin\jar" cf WebServiceProxies.jar *
Lỗi!
"Unknown protocol: classpath"
Thật kỳ lạ, bài đăng trên Stack Overflow được đánh dấu là câu trả lời. Tôi đoán có thể là trong hai năm qua, một số tiền phong nha đã thay đổi thành điểm "classpath:" không còn được hỗ trợ hoặc có phương pháp khác nhưng tôi không thể tìm ra câu trả lời .
OK, vì vậy tôi có một trong một số câu hỏi tôi cần được trả lời (cảm ơn trước !!!! Tôi sẽ đến đây!).
Có cách nào để KHÔNG CẦN WSDL khi chạy không? Đối với những gì nó có giá trị, tôi nghĩ rằng đó là B.S. rằng nó cần điều này khi tôi khởi tạo các đối tượng. Bất kỳ cách nào để ngăn chặn yêu cầu này? Có lẽ nếu tôi sử dụng một công cụ khác ...?
Nếu không có cách nào để mã này không cần WSDL khi chạy, làm cách nào để nhận mã WSDL từ gói này? Tôi đặt gì trong đối số wsdllocation để làm cho nó tải WSDL từ bên trong tệp JAR?
Bài đăng của bạn rất dài. Tôi đoán rằng ít người có thể đọc toàn bộ bài đăng. – Max
Được chỉnh sửa để làm cho bài đăng ngắn hơn bằng cách lấy ra các bài viết và củng cố một số thử nghiệm và lỗi đó. – bdzevel
Sử dụng netbeans, bạn có thể tránh sử dụng các công cụ dòng lệnh, bạn trỏ đến WSDL tại và nó sẽ tự động tạo một bản sao trong 'META-INF \ wsdl' và đặt nó vào bình cuối cùng chứa dự án. (http://netbeans.org/kb/docs/websvc/jax-ws.html) – madth3