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. Stara klasa inicjowania to com.sun.xml.bind.ContextFactory.
Jeśli nazwa starej klasy jest ustawiona we właściwości javax.xml.bind.context.factory, zostanie wygenerowany wyjątek java.lang.ClassNotFoundException podczas korzystania z bibliotek JAXB dostępnych w środowisku Java 6.
Ta reguła skanuje w poszukiwaniu metody javax.xml.bind.JAXBContext.newInstance, która jest używana do uzyskiwania kontekstu JAXBContext. Jeśli używana jest technologia JAXB, należy sprawdzić aplikację pod kątem używania starej fabryki kontekstów. Ponadto reguła ta wykrywa literały łańcuchowe „com.sun.xml.bind.ContextFactory” i „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 należy wpisać com.sun.xml.bind.ContextFactory.
W polu Wzorce nazw plików należy wpisać *.properties.
Wyszukiwanie należy powtórzyć dla łańcucha com.sun.xml.bind.DefaultJAXBContextImpl.
Gdy technologia JAXB jest używana w produkcie WebSphere w wersji 7 lub 8, domyślną klasą inicjowania jest com.ibm.xml.xlxp2.jaxb.JAXBContextFactory, jeśli nie ustawiono właściwości javax.xml.bind.context.factory.
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: