Tôi phải triển khai ứng dụng khách webservice đến tệp WSDL đã cho. Tôi đã sử dụng công cụ 'wsimport' của SDK để tạo các lớp Java từ WSDL cũng như một lớp bọc phương thức duy nhất của webservice (enhanceAddress(auth, param, address)
) vào một phương thức java đơn giản. Càng xa càng tốt. Webservice có chức năng và trả về kết quả đúng đắn. Mã này trông như thế này:Chi tiết kết nối & thời gian chờ trong ứng dụng khách dịch vụ web java
try {
EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
//Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
throw new AddressValidationException("Error during uniserv webservice request.", e);
}
Vấn đề bây giờ là: tôi cần để có được thông tin về các kết nối và bất kỳ lỗi có thể xảy ra để cư giá trị JMX khác nhau (chẳng hạn như COUNT_READ_TIMEOUT, COUNT_CONNECT_TIMEOUT, ...) Thật không may, phương pháp này không chính thức ném bất kỳ Trường hợp ngoại lệ nào, do đó, để có được thông tin chi tiết về ConnectException, tôi cần sử dụng getCause()
trên số ClientTransportException
sẽ bị loại bỏ.
Thậm chí tệ hơn: tôi đã thử kiểm tra giá trị thời gian chờ đọc, nhưng không có giá trị nào. Tôi đã thay đổi vị trí của dịch vụ trong tệp wsdl để gửi yêu cầu tới một tập lệnh php mà chỉ đơn giản là chờ đợi mãi mãi và không trả lại. Đoán xem: Ứng dụng khách dịch vụ web thực hiện không phải là hết thời gian chờ đợi (tôi đã giết ứng dụng sau 30 phút chờ đợi). Đó không phải là một lựa chọn cho ứng dụng của tôi khi tôi cuối cùng chạy ra khỏi các kết nối tcp nếu một số người trong số họ bị 'kẹt'.
Phương thức enhanceAddress(auth, param, address)
không được triển khai nhưng được chú thích bằng javax.jws. * Chú thích, có nghĩa là tôi không thể xem/thay đổi/kiểm tra mã thực sự được thực thi.
Tôi có tùy chọn nào khác ngoài việc vứt bỏ toàn bộ công cụ wsimport/javax.jsw và thực hiện ứng dụng khách xà phòng của riêng mình?
Vì tôi đã có Vấn đề 2 tuần trước, tôi đã viết ứng dụng khách của riêng mình. Mặc dù vậy, tôi đã thử nghiệm cách tiếp cận của bạn và nó đang hoạt động! Tôi đã tìm thấy một đoạn mã tương tự trước đó, nhưng bằng cách nào đó nó đã cho tôi một ClassCastException khi tôi cố gắng để đúc để BindingProvider. – f1sh
Tôi có một vấn đề tương tự, NHƯNG thời gian chờ xảy ra khi tôi nhận được cổng, làm thế nào để giải quyết nó ?? – maugch