2012-09-10 29 views
5

Tôi đang làm việc để nâng cấp mã từ JBoss 5.1 lên JBoss 7.1 và không thành công nếu các phương pháp này không được triển khai rõ ràng trong bộ điều hợp tài nguyên. Tôi hiểu khái niệm của từng người, và biết về hợp đồng giữa hai người. Tôi không hỏi về cách thực hiện chúng hoặc ý nghĩa của chúng. Tôi hỏi cụ thể lý do tại sao họ PHẢI được thực hiện cho mã Java EE 6 (trong trường hợp này là JBoss AS 7.1).Tại sao Java EE 6 yêu cầu equals() và hashCode() để được triển khai cho bộ điều hợp tài nguyên?

Có một lý do tốt để đặt rất nhiều suy nghĩ vào chúng hoặc là nó đủ để chỉ cần có:

boolean equals(Object obj) { return super.equals(obj) ; } 
int hashCode() { return super.hashCode() ; } 
+0

Bạn thấy các yêu cầu đó ở đâu? –

+0

Khi khởi động. Xin lỗi, lần đầu tiên đăng bài, nhấn enter khi gõ thẻ và nó đã đăng câu hỏi. Chỉ cần chỉnh sửa. –

+0

Thú vị, dường như có nhiều lượt truy cập Google cho vấn đề này ('" Một ResourceAdapter phải triển khai phương thức "công bằng boolean (Object)") nhưng không có giải thích thực tế _why_ đây là bắt buộc. –

Trả lời

1

Tôi nghĩ rằng điều này là do sau

thanh toán ManagedConnectionFactory đây.

xem đây là giao diện và có các phương thức equals()hashCode(). Vì vậy, cơ bản java, lớp bê tông đầu tiên thực hiện một giao diện phải xác định tất cả các phương thức của giao diện. Bộ điều hợp tài nguyên nào của bạn phải triển khai, vì vậy, phải xác định các phương pháp này

tham khảo A resource adapter needs to implement ManagedConnectionFactory tại đây.

Theo câu hỏi ở trên, theo JCA 1.6 đặc tả chúng ta cần phải cung cấp thực hiện cho

A resource adapter must provide implementations of the following interfaces: 

javax.resource.spi.ManagedConnectionFactory 
javax.resource.spi.ManagedConnection 
javax.resource.spi.ManagedConnectionMetaData 

nào wasnt trường hợp với 1,5

Vì vậy, đó là lý do tại sao nó mang lại cho lỗi trong quá trình Validation

Trình xác thực JCA đã trở nên nghiêm ngặt hơn với phiên bản 1.6, do đó là lỗi.

Không có gì rõ ràng về điều này, có rất nhiều câu hỏi và bài đăng trên internet về cùng một vấn đề. Giải thích tốt nhất có thể tôi thấy là "yêu cầu" của việc cung cấp một nhà máy kết nối.

Ngoài ra trong trường hợp bạn cần phải bỏ qua lỗi, bạn cần phải chuyển sang JCA 1.5 hoặc vô hiệu hóa với 1.6