2012-09-10 14 views
5

Sto lavorando all'aggiornamento del codice da JBoss 5.1 a JBoss 7.1 e non riesce se questi metodi non sono implementati esplicitamente negli adattatori di risorse. Comprendo il concetto di ciascuno e conosco il contratto tra i due. Non sto chiedendo come implementarli o cosa significano. Sto chiedendo specificamente perché DEVONO essere implementati per il codice Java EE 6 (in questo caso JBoss AS 7.1).Perché Java EE 6 richiede equals() e hashCode() da implementare per gli adattatori di risorse?

C'è un buon motivo per mettere un sacco di pensiero in loro o è sufficiente avere semplicemente:

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

Dove si vede che coloro che sono tenuti? –

+0

all'avvio. Spiacente, prima volta post, premi invio quando digiti i tag e ha postato la domanda. Appena modificato –

+0

Interessante, sembra che ci siano un sacco di hit di Google per questo problema ('" Un ResourceAdapter deve implementare un metodo "boolean equals pubblico (Object)". ") Ma non ci sono spiegazioni effettive per cui è necessario. –

risposta

1

Penso che questo è dovuto al fatto di seguire

cassa ManagedConnectionFactory qui.

vedere questa è un'interfaccia e dispone di metodi equals() e hashCode(). Quindi Basic Java, la prima classe concreta che implementa un'interfaccia, deve definire tutti i metodi dell'interfaccia. Quale adattatore di risorse deve essere implementato, quindi deve definire questi metodi

fare riferimento a A resource adapter needs to implement ManagedConnectionFactory qui.

Come per la domanda di cui sopra, secondo JCA 1.6 spec abbiamo bisogno di fornire l'implementazione per

A resource adapter must provide implementations of the following interfaces: 

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

che non era il caso con 1,5

Ecco perché dà errore durante la convalida

Il validatore JCA è diventato più rigoroso con la versione 1.6, quindi l'errore.

Nulla è molto chiaro su questo, ci sono molte domande e post su internet sullo stesso problema. La migliore spiegazione possibile che ho trovato era il "requisito" di fornire una fabbrica di connessione.

Anche in caso di necessità di bypassare l'errore, vi sia bisogno di passare a JCA 1.5 o disattivare il 1,6

Problemi correlati