2012-04-03 17 views
5

W Websphere można utworzyć "udostępnione biblioteki" i powiązać je z aplikacjami. Chciałbym wiedzieć, jeśli chodzi o pozycję w ścieżce klasowej, jaka jest pozycja udostępnianych bibliotek? Oznacza to, że chcę wiedzieć, w przypadku zduplikowanych zasobów, które będą miały wyższy "priorytet" do załadowania, biblioteki współdzielone lub samą EAR/WAR.Biblioteki współdzielone Websphere "Priorytet"?

Załóżmy na przykład, że w mojej aplikacji mam zasoby o nazwie appConfig.xml i tworzę lokalny katalog na serwerze aplikacji, umieszczając w tym katalogu inny plik appConfig.xml. Jeśli spróbuję załadować zasoby (np. Otwarty strumień wejściowy) w mojej aplikacji, który plik zostanie załadowany?

Szukałem przez chwilę i mogę nigdzie nie wspomnieć o tym. Choć sam mogę go wypróbować eksperymentując, chciałbym poznać oficjalne oczekiwane zachowanie, jeśli takie istnieje.

Thanks a lot

Odpowiedz

4

Porządkowanie wśród modułów ładujących klasy wykorzystuje tak zwany "tryb modułu ładującego klasy", który jest albo "nadrzędny jako pierwszy" (i klasy aplikacji/zasoby jako ostatnie) lub "nadrzędny jako ostatni" (najpierw z klasami aplikacji/zasobami). Dla pojedynczej klasy loader aplikacji, kolejność ścieżki klasy będą:

  1. ścieżki klasy moduł
  2. ścieżki klasy
  3. zależnościami
  4. wspólne ścieżki (Class-Path w MANIFEST.MF) Class Library

Nie ma opcji konfiguracji, aby zmienić kolejność. Nie sądzę, aby ta kolejność była jasno określona w dokumentacji, ale myślę, że jest bardzo mało prawdopodobne, aby się zmieniła. Niezależnie od tego nie polecałbym polegania na tym. Zalecam zapewnienie używania unikalnych nazw zasobów/klas w pojedynczym programie ładującym klasy.

+2

Również, gdy masz wątpliwości i chcesz wiedzieć, jak WAS używa bibliotek, możesz skorzystać z widoku "Konsola internetowa - Przeglądarka -> Podgląd programu ładującego klasy" w konsoli administracyjnej WAS. – MrJames

+1

Tak, przeglądarka modułów ładujących klasy może być przydatna do określenia, w jaki sposób serwer dokonał montażu. Nie musi to koniecznie wyjaśniać racji dotyczących zamówień. –

+0

W rzeczywistości przeczytałem to już wcześniej: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.soafep.multiplatform.doc/info/ae/ae/ucws_rsharedlib_inst.html Pod koniec znajduje się specjalna sekcja dotycząca "Używaj izolowanego programu ładującego klasy dla tej współużytkowanej biblioteki", a w tej sekcji wymieniono zamówienie, które podałeś. Co myślę, że jest to wskazówka, że ​​w przypadku normalnej biblioteki współużytkowanej nie używa oddzielnego programu ładującego klasy dla bibliotek współdzielonych. Czy ktoś może sprawdzić, czy moje zrozumienie jest poprawne? (Jeśli nie, jaka jest różnica między izolowanym programem ładującym klasy a normalną biblioteką współdzieloną?) –