blank blank
Konflikt mellom klasser i Websphere
Du har en Enterprise Application som inneholder 2 eller flere prosjekter eller moduler/biblioteker i egne .JAR filer som er utviklet uavhengig av hverandre. Det kan for eksempel være innkjøpte eksterne moduler eller det kan være moduler utviklet internt, men av uavhengige team.

 

Konflikt mellom klasser i WebSphere

Setting:

Du har en Enterprise Application som inneholder 2 eller flere prosjekter eller moduler/biblioteker i egne .JAR filer som er utviklet uavhengig av hverandre. Det kan for eksempel være innkjøpte eksterne moduler eller det kan være moduler utviklet internt, men av uavhengige team.

Problem:

Når alt er satt sammen og skal kjøres i WebSphere så får du en Exception med feilmelding som tyder på at en biblioteksrutine er feil eller mangler. Det kan for eksempel være NoSuchMethodException, ClassCastException, NoSuchFieldException eller lignende.

Når du sjekker .JAR fila for modulen som feiler så ligger alle .class filer som de skal og er av rett versjon.

Hvis du tester modulen i en standalone java så fungerer også alt som det skal.

Forklaring:

Selv om det i noen av feilmeldingene kan virke som om det er en library-fil for lite så er sannheten faktisk at det istedet er en for mye. Kryss-sjekker du .JAR filene så vil du se at en eller flere class filer ligger flere steder, og har forskjeligge datoer/størrelser. Det som utløser problemet er at en gammel versjon av klassen blir lastet først, og når Websphere senere blir bedt om å laste klassen på nytt så ser den at klassen allerede er lastet og bruker denne videre. Den nye og oppdaterte klassen blir derfor ikke lastet , og med en gang du prøver å bruke f.eks en ny metode så finnes ikke denne i klassen og det blir kastet en Exception.

Løsning:

Den beste løsningen er å ha alle felles biblioteksrutiner separate fra de enkelte JAR filer.

Når det gjelder egenutviklede ting burde det ordnes lett.

Det er selvsagt ikke alltid så lett når man bruker eksterne biblioteker som er pakket inn så de skal inneholde alt som trengs når de brukes til standalone applications. I noen tilfelle så må man bare prøve seg fram og fjerne enkelt-klasser fra JAR filene inntil man ser at rett klasse lastes.

 


Copyright © 2005 - 2009 BAR Consult AS      |      Rundtjernveien 6, 0672 Oslo - Tlf. 92 49 45 55


Om BAR Consult    Nyheter    Tjenester    Produkter    Tips & Triks    Kontakt oss