Tôi hiện đang viết một bộ dịch vụ web mới bằng cách sử dụng JAX-WS nhưng tôi đang gặp khó khăn khi quyết định cách tốt nhất để xác thực các yếu tố đầu vào. Tôi có thể làm một số xác nhận trong các lớp thực hiện của tôi nhưng một số lỗi đầu vào không âm thầm. Ví dụ dữ liệu ký tự trong một phần tử số sẽ dẫn đến một số nguyên null trong đối tượng JAXB.Cách tốt nhất để xác thực các đầu vào JAX-WS?
Đây là những thiết kế mà tôi đã gặp.
@SchemaValidation
tôi có thể thêm chú thích cho cả lớp nghe endpoint và JAX-WS sẽ chăm sóc của việc xác thực. Điều này làm việc tại địa phương trong tomcat nhưng có những lo ngại rằng nó sẽ không hoạt động trên một số máy chủ. Nét chính của tôi là tôi phải đầu hàng kiểm soát cách các lỗi được xuất ra trong phản hồi.Tất cả đầu vào là chuỗi
Tôi ghét phương pháp này nhưng tôi đã thấy các dịch vụ web khác trong đó tất cả đầu vào được xác định là chuỗi. Điều này sẽ nắm bắt trường hợp dữ liệu ký tự trong một phần tử số vì tôi có thể kiểm tra nó nơi tôi gọi API của chúng tôi mặc dù bạn vẫn sẽ bỏ lỡ bất kỳ phần tử xml được đặt tên không chính xác nào.
Tôi thực sự muốn các lỗi quay lại theo cách tương tự như lỗi API hơn là lỗi xà phòng. Bất kỳ ý tưởng? Tôi đã nhìn thấy một vài trang web nói về việc chặn yêu cầu bằng một loại bộ lọc. Bạn không chắc chắn làm thế nào điều này sẽ làm việc với các phản ứng khác nhau cho các hoạt động khác nhau mặc dù.
E.G.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<myOperationResponse>
<return>
<success>false</success>
<errors>
<error>
<code>UNIQUECODE</code>
<message>Message text</message>
</error>
</errors>
</return>
</myOperationResponse>
</S:Body>
</S:Envelope>
Có thể tôi đang hỏi quá nhiều nhưng tôi nghĩ mình sẽ bỏ lỡ bất cứ điều gì. TIA.
Lời nhắc nhở này đã nhắc tôi nhớ về điều này. Điều này hiện đang được sản xuất cho một số dự án và chúng tôi không có vấn đề gì. –