Ta reguła jest powiązana ze zmianami w klasach inicjowania JAXB (Java Architecture for XML Binding) i konfliktami, które mogą wystąpić podczas migrowania z wersji serwera WebSphere Application Server wcześniejszych niż 7.0. Istnieją dwa scenariusze migracji JAXB, które spowodowały problemy z aplikacjami klienta. Pierwszy dotyczy aplikacji migrowanych z WebSphere 6.1 Feature Pack for Web Services. Drugi scenariusz dotyczy aplikacji klienta, które tworzą pakiet implementacji JAXB i są migrowane do produktu WebSphere w wersji 7.0 lub nowszej.
W produkcie WebSphere w wersji 7.0 technologia JAXB 2.1 jest dostarczana jako część środowiska wykonawczego Java 6.
W wersjach wcześniejszych niż 7.0 pakiet WebSphere 6.1 Feature Pack for Web Services dostarczał technologię JAXB 2.0, w której używana była inna klasa inicjowania niż ta, która jest używana w technologiach JAXB 2.1 lub 2.2 (w wersji 8.0).
Jeśli aplikacja określa używanie starej klasy inicjowania, podczas uruchamiania tej aplikacji mogą być generowane wyjątki dotyczące nieznalezienia klasy.
Klasę inicjowania można zdefiniować za pomocą właściwości javax.xml.bind.context.factory. Starą klasą inicjowania jest com.sun.xml.bind.ContextFactory.
Jeśli stara nazwa klasy jest ustawiona we właściwości javax.xml.bind.context.factory,
zostanie zgłoszony wyjątek java.lang.ClassNotFoundException w przypadku korzystania z bibliotek JAXB
dostępnych w środowisku Java 6.
Ta reguła skanuje występowanie metody javax.xml.bind.JAXBContext.newInstance używanej
do uzyskiwania JAXBContext. Jeśli używana jest technologia JAXB, należy sprawdzić aplikację pod kątem używania starej fabryki kontekstów. Reguła wykryje również literały łańcuchowe
"com.sun.xml.bind.ContextFactory" lub "com.sun.xml.bind.DefaultJAXBContextImpl" w kodzie Java,
ale nie skanuje plików właściwości, w których te wartości są często ustawiane.
Mogą być one także ustawione we właściwościach systemowych Java.
Właściwości JAXB są zwykle ładowane z pliku jaxb.properties. Należy ręcznie przeskanować pliki właściwości aplikacji, aby określić, czy stara fabryka kontekstów jest zdefiniowana.
Aby zeskanować pliki właściwości w programie Eclipse, wybierz kolejno opcje Szukaj > Plik....
W polu Zawierający tekst wpisz com.sun.xml.bind.ContextFactory.
W polu Wzorce nazw plików należy wpisać *.properties.
Powtórz wyszukiwanie łańcucha com.sun.xml.bind.DefaultJAXBContextImpl.
W przypadku korzystania z JAXB w produkcie WebSphere 7 lub 8 domyślną klasą inicjowania jest
com.ibm.xml.xlxp2.jaxb.JAXBContextFactory, jeśli
żadna właściwość javax.xml.bind.context.factory jest ustawiona.
W przypadku drugiego scenariusza klienci, którzy spakowali implementację JAXB jako część aplikacji w wersji wcześniejszej niż 7, także mogą napotkać właśnie opisane problemy lub zmiany w zachowaniu przy migracji do produktu WebSphere w wersji 7.0 lub nowszej. Dzieje się tak wtedy, gdy ładowane są wersje JAXB 2.1 lub 2.2 dostarczane w ramach środowiska wykonawczego Java zamiast implementacji JAXB dostarczanej z aplikacją. Artykuł Włączanie aplikacji JAX-WS innej firmy na serwerze WebSphere Application Server w wersji 7 zawiera opis sposobu obejścia problemów z programem ładującym klasy, jeśli ma być nadal używana określona implementacja JAXB.
Dodatkowe informacje zawierają następujące informacje uzupełniające: