Ellenőrizze a JAXB kontextusgyártó inicializálási osztályát

Ez a szabály a Java Architecture for XML Binding (JAXB) inicializálási osztály változásaihoz és konfliktusaihoz kapcsolódik, amelyek olyankor fordulnak elő, amikor a WebSphere Application Server 7.0 előtti változatairól tér át. Két olyan JAXB áttérési példahelyzet van, amelyek ügyfélalkalmazásokkal kapcsolatot problémákat okoztak. Ez első a világhálós szolgáltatások WebSphere 6.1 szolgáltatáscsomagjáról átállított alkalmazásokhoz kapcsolódik. A második példahelyzet olyan ügyfélalkalmazásokhoz kapcsolódik, amelyek JAXB megvalósítást csomagolnak be és WebSphere 7.0 vagy újabb változatra lesznek átállítva.

A WebSphere 7.0 változatban a JAXB 2.1 a Java 6 futási környezet részeként kerül szállításra. A V7.0 előtt a WebSphere 6.1 Feature Pack for Web Services a JAXB 2.0 változatot adta, amely más inicializálási osztályt használ, mint a JAXB 2.1 vagy 2.2 (V8.0). Ha az alkalmazás a régi inicializálási osztály használatát adja meg, akkor az osztály nem található kivételek keletkezhetnek, amikor az alkalmazást futtatják. Az inicializálási osztály a javax.xml.bind.context.factory tulajdonság segítségével határozható meg. A régi inicializálási osztály a com.sun.xml.bind.ContextFactory. Ha a régi osztálynév van beállítva a javax.xml.bind.context.factory tulajdonságban, akkor java.lang.ClassNotFoundException kivételt fog kapni, amikor a Java 6 változattal elérhető JAXB hakat használja.

Ez a szabály a javax.xml.bind.JAXBContext.newInstance metódust keresi, amelyet a JAXBContext lekérdezéséhez használnak. JAXB használata esetén ellenőrizze, hogy alkjalmazása a régi kontextusgyártót használja-e. A szabály a "com.sun.xml.bind.ContextFactory" és "com.sun.xml.bind.DefaultJAXBContextImpl" karaktersorozat literálokat is felismeri a Java kódban, de nem elemzi a tulajdonságfájlokat, ahol ezek az értékek gyakran be vannak állítva. Java rendszertulajdonságokban szintén beállíthatók.

A JAXB tulajdonságok általában a jaxb.properties fájlból kerülnek betöltésre. Kézi úton elemezve az alkalmazás tulajdonságfájlait állapítsa meg, hogy a régi kontextusgyártó van-e megadva.

A tulajdonságfájlok elemzéséhez az Eclipse rendszerben, válassza ki a Keresés > Fájl... funkciót. A Containing text mezőbe írja be a következőt: com.sun.xml.bind.ContextFactory. A File name patterns mezőbe írja be a következőt: *.properties. Ismételje meg a keresést a com.sun.xml.bind.DefaultJAXBContextImpl karaktersorozatra.

Ha WebSphere 7 vagy 8 változatban használ JAXB architektúrát, akkor az alapértelmezett inicializálási osztály a com.ibm.xml.xlxp2.jaxb.JAXBContextFactory, ha nincs beállított javax.xml.bind.context.factory tulajdonság.

A második példahelyzet esetében a 7-es változat előtt az alkalmazás csomagjának részekén JAXB megvalósítást elhelyező ügyfelek szintén tapasztalhatják az imént leírt problémákat vagy viselkedésváltozásokat, amikor WebSphere 7.0 vagy újabb változatra állnak át. Ez olyankor fordul elő, amikor a Java futási környezet részeként adott JAXB 2.1 vagy 2.2 változat kerül betöltésre az alkalmazással szállított JAXB megvalósítás helyett. A Külső JAX-WS alkalmazás engedélyezése WebSphere Application Server 7-es változatban című cikk leírja, hogyan lehet a betöltő problémákat áthidalni, ha továbbra is a saját JAXB megvalósítását kívánja használni.

További információkért tekintse meg a következő hivatkozásokat: