Tôi đã sử dụng JAXWS-RI 2.1 để tạo giao diện cho dịch vụ web của mình, dựa trên WSDL. Tôi có thể tương tác với dịch vụ web không có vấn đề gì, nhưng không thể chỉ định thời gian chờ để gửi yêu cầu đến dịch vụ web. Nếu vì lý do nào đó mà nó không phản hồi, khách hàng có vẻ như quay bánh xe của nó mãi mãi.
Việc săn lùng xung quanh đã tiết lộ rằng tôi có lẽ nên cố gắng làm điều gì đó như thế này:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Tôi cũng phát hiện ra rằng, tùy thuộc vào phiên bản JAXWS-RI mà bạn có, bạn có thể cần đặt các thuộc tính này để thay thế:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
Tôi có vấn đề là, bất kể là những điều trên là đúng, tôi không biết nơi tôi có thể làm điều này. Tất cả những gì tôi có là một Service
lớp con triển khai giao diện được tạo tự động cho dịch vụ web và tại thời điểm điều này đang được cài đặt, nếu WSDL không đáp ứng thì đã quá muộn để đặt các thuộc tính:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Ai đó có thể chỉ cho tôi phương hướng đúng không?!