Această regulă este pentru modificările clasei de iniţializare Java Architecture for XML Binding (JAXB) şi conflictele care pot apărea când se realizează migrarea de la versiunile WebSphere Application Server mai vechi decât V7.0. Există două scenarii de migrare JAXB care au cauzat probleme cu aplicaţiile clientului. Primul se referă la aplicaţiile migrate de la WebSphere 6.1 Feature Pack for Web Services. Al doilea scenariu se referă la aplicaţiile clientului care includ o implementare JAXB şi sunt migrate la WebSphere V7.0 sau versiuni ulterioare.
În WebSphere V7.0, JAXB 2.1 este livrat ca parte a runtime-ului Java 6.
Înainte de V7.0, WebSphere 6.1 Feature Pack for Web Services livra JAXB 2.0,
care utiliza o clasă de iniţializare diferită de cea utilizată în JAXB 2.1 sau 2.2 (V8.0).
Dacă aplicaţia specifică utilizarea vechii clase de iniţializare, pot fi generate excepţii de clasă negăsită atunci când este rulată
aplicaţia.
Clasa de iniţializare pot fi definită utilizând proprietatea javax.xml.bind.context.factory. Vechea clasă de inițializare este com.sun.xml.bind.ContextFactory.
Dacă numele clasei vechi este setat pe proprietatea javax.xml.bind.context.factory, veți obține un Java.lang.ClassNotFoundException atunci când se utilizează bibliotecile JAXB disponibile cu Java 6.
Această regulă scanează pentru javax.xml.bind.Metoda JAXBContext.newInstance care este folosită pentru a obține un JAXBContext. Dacă utilizaţi JAXB, ar trebui să vă verificaţi aplicaţia, pentru a vedea dacă utilizează vechea fabrică de
context. Regula va detecta, de asemenea, literalii șir
"com.sun.xml.bind.ContextFactory" sau "com.sun.xml.bind.DefaultJAXBContextImpl" în codul Java, dar nu scanează fișierele de proprietăți unde sunt setate de obicei aceste valori.
Acestea pot fi setate, de asemenea, în proprietățile de sistem Java.
Proprietăţile JAXB sunt de obicei încărcate dintr-un fişier jaxb.properties. Scanaţi-vă manual aplicaţia pentru a
determina dacă este definită vechea fabrică de context.
Pentru a scana fișierele de proprietăți în Eclipse, selectați Search > File....
În câmpul Containing text, tastați com.sun.xml.bind.ContextFactory.
În câmpul File name patterns, tastaţi *.properties.
Repetați căutarea pentru șirul com.sun.xml.bind.DefaultJAXBContextImpl.
Când utilizați JAXB în WebSphere V7 sau V8, clasa de inițializare implicită este
com.ibm.xml.xlxp2.jaxb.JAXBContextFactory dacă nu este setată nicio proprietate
javax.xml.bind.context.factory.
Pentru al doilea scenariu, clienţii care au inclus o implementare JAXB în aplicaţia lor înainte de V7 se pot confrunta de asemenea cu problemele deja descrise sau cu modificări de comportament atunci când migrează la WebSphere V7.0 sau o versiune ulterioară. Aceasta se întâmplă când sunt încărcate versiunile JAXB 2.1 sau 2.2 furnizate ca parte a runtime-ului Java, în loc să fie încărcată implementarea JAXB livrată cu aplicaţia. Articolul Activarea unei aplicaţii JAX-WS terţă parte în WebSphere Application Server V7 prezintă un paliativ pentru problemele încărcătorului de clase, dacă vreţi să utilizaţi în continuare implementarea dumneavoastră JAXB.
Pentru informaţii suplimentare, vedeţi următoarele referinţe