2012-09-10 37 views
5

我正在將代碼從JBoss 5.1升級到JBoss 7.1,如果這些方法沒有在資源適配器中明確實現,它會失敗。我理解每個人的概念,並瞭解兩者之間的合同。我不是在問如何實現它們或它們的意思。我特別問他們爲什麼必須爲Java EE 6代碼(在這種情況下是JBoss AS 7.1)實施。爲什麼Java EE 6需要爲資源適配器實現equals()和hashCode()?

有一個很好的理由投入了大量的心思他們還是足以只需:

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

禁止你在哪裏看到那些需要? –

+0

啓動時。對不起,第一次發佈時,在輸入標籤時點擊回車,它發佈了問題。剛剛編輯。 –

+0

有趣的是,似乎有很多谷歌點擊這個問題(''一個ResourceAdapter必須實現「公共布爾等於(對象)」方法。「'),但沒有實際的解釋_爲什麼這是必需的。 –

回答

1

我想這是因爲以下

結賬ManagedConnectionFactory這裏的。

看到這是一個接口,並有equals()hashCode()方法。所以基本的java,第一個實現接口的具體類必須定義接口的所有方法。您的資源適配器必須實施哪些功能,因此必須定義這些方法

請參閱A resource adapter needs to implement ManagedConnectionFactory

按照上面的問題,根據JCA 1.6規範,我們需要爲

A resource adapter must provide implementations of the following interfaces: 

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

這wasnt 1.5

所以的情況下提供實施,這就是爲什麼它驗證

期間 給出錯誤

JCA驗證器在版本1.6中變得更加嚴格,因此是錯誤。

沒有什麼比這更清楚的了,網上有很多關於同一問題的問題和帖子。 我發現的最佳解釋是提供連接工廠的「要求」。

情況下也需要繞行的錯誤,你要麼需要切換到JCA 1.5或1.6

相關問題