Zkontrolovat inicializační třídu továrny kontextu JAXB

Toto pravidlo souvisí se změnami třídy inicializace Java Architecture for XML Binding (JAXB) a konflikty, k nimž může dojít při migraci z verzí produktu WebSphere Application Server před V7.0. Existují dva scénáře migrace JAXB, které způsobují problémy se zákaznickými aplikacemi. První souvisí s aplikacemi migrovanými z produktu WebSphere 6.1 Feature Pack for Web Services. Druhý scénář souvisí se zákaznickými aplikacemi, které balí implementaci JAXB a jsou migrovány na WebSphere V7.0 nebo novější.

V produktu WebSphere V7.0 se JAXB 2.1 dodává jako součást běhového prostředí Java 6. Před verzí 7.0 byl produkt WebSphere 6.1 Feature Pack for Web Services dodán s JAXB 2.0, který používal jinou inicializační třídu, než je použito v JAXB 2.1 nebo 2.2 (V8.0). Pokud aplikace určuje použití staré inicializační třídy, výjimky pro nenalezené třídy lze generovat při spuštění aplikace. Inicializační třída může být definována pomocí vlastnosti javax.xml.bind.context.factory. Stará inicializační třída je com.sun.xml.bind.ContextFactory. Je-li název staré třídy nastaven na vlastnost javax.xml.bind.context.factory, obdržíte při použití knihoven JAXB dostupných s Java 6 výjimku java.lang.ClassNotFoundException.

Toto pravidlo prochází a hledá metodu javax.xml.bind.JAXBContext.newInstance, která se používá k získání JAXBContext. Používáte-li JAXB, měli byste zkontrolovat aplikaci pro použití staré továrny kontextu. Pravidlo také zjistí řetězcové literály "com.sun.xml.bind.ContextFactory" nebo "com.sun.xml.bind.DefaultJAXBContextImpl" v kódu Java, ale neskenuje soubory vlastností, kde jsou tyto hodnoty často nastaveny. Lze je také nastavit v systémových vlastnostech Java.

Vlastnosti JAXB se běžně načítají ze souboru jaxb.properties. Procházejte soubory vlastností aplikace ručně a určete, zda je definována stará továrna kontextu.

Chcete-li skenovat soubory vlastností v Eclipse, vyberte nabídku Vyhledat > Soubor.... Do pole Obsahující text zadejte com.sun.xml.bind.ContextFactory. Do pole Vzory názvů souborů zadejte *.properties. Zopakujte hledání pro řetězec com.sun.xml.bind.DefaultJAXBContextImpl.

Při použití JAXB v WebSphere V7 nebo V8 je výchozí inicializační třída com.ibm.xml.xlxp2.jaxb.JAXBContextFactory, pokud není nastavena vlastnost javax.xml.bind.context.factory.

V případě druhého scénáře mohou zákazníci, kteří zabalili implementaci JAXB jako součást své aplikace před verzí V7, rovněž zažít právě popsané problémy nebo změny chování při migraci na WebSphere V7.0 nebo novější. K tomu dojde v případě, že jsou verze JAXB 2.1 nebo 2.2 poskytované jako načtená součást běhového prostředí Java, nikoli jako implementace JAXB dodaná s aplikací. Článek Povolení aplikace JAX-WS třetí strany na serveru WebSphere Application Server V7 popisuje způsob práce s problémy zavaděče tříd v případě, že chcete pokračovat v používání implementace JAXB.

Další informace naleznete v následujících odkazech.