• Nie Znaleziono Wyników

Szczegółowy  opis  składowych  DCM Collector  Agent  (CA)

W dokumencie Index of /rozprawy2/10252 (Stron 81-87)

Aspekty  bezpieczeństwa

3.3.1.2.       Szczegółowy  opis  składowych  DCM Collector  Agent  (CA)

Jak już przedstawiono wcześniej, zasadniczym celem CA jest monitorowanie stanu meta-­‐ danych  w  repozytoriach.  Czynności  te  są  realizowane  poprzez:  

• pobieranie  danych  i  ich  wstępną  analizę;

• dostarczanie  do  kontenera  głównego  informacji  o  zmianach  w  repozytorium; • przekazywanie  informacji  o  niezgodnościach  w  strukturze  metadanych.

Pobrane dane są zapisane w XML zgodnie z określonym formatem reprezentacji danych. Poprawna analiza treści metadanych wymaga implementacji obsługi parsowa-­‐ nia danych zgodnie z konkretną ich reprezentacją. W związku z tym kluczowymi meto-­‐ dami OAI-­‐PMH wykorzystywanymi przez CA są: listMetadataFormats(), listRecords()

i  identify().

Wywołanie metody listMetadataFormats pozwala uzyskać informację jakie formaty reprezentacji metadanych są wspierane przez repozytorium. (Opcjonalny argument pozwala  uzyskać  informację  o  dostępnych  formatach  opisu  dla  konkretnego  elementu) Struktura  formatu  odpowiedzi  została  przedstawiona  poniżej  (schema)  (Rys.  56).

Rysunek  56.    Struktura  otrzymanego  wyniku  wywołania  metody  listMetadataFormats

Wywołanie metody listRecordspozwala uzyskać listę rekordów opisujących metadane zgromadzone w repozytorium. W zależności od faktu czy repozytorium wspiera prze-­‐ chowywanie informacji usuniętych metadanych istnieje możliwość uzyskania informacji bezpośredniej o usuniętych metadanych poprzez nagłówek zwracanego rekordu XML w którym atrybut pola status dla danego rekordy wynosi "deleted". Rekord taki nie zawiera metadanych. Inne wartości atrybutu status w nagłówku rekordu to "added" czy "modiWied" w zależności od zmian związanych z metadanymi. Obrazowo schema XML odpowiedzi  została  przedstawiona  poniżej  (Rys.  57):

Rysunek  57.    Struktura  otrzymanego  wyniku  wywołania  metody  listRecords

Wywołanie metody identify pozwala uzyskać informacje opisujące dane repozytorium zawierające przede wszystkim takie elementy jak: nazwę repozytorium, adres URL dostępu do repozytorium, wersję protokołu OAI-­‐PMH wspieranego przez repozytorium, czas ostatnich zmian w repozytorium wyrażony w UTC (UTCdatetime), czy sposób nota-­‐ cji  o  rekordach  usuniętych.  

Agent CA gromadzi przetworzone dane15w obiektach klasy MetaLOM(Rys. 58). Pojedynczy obiekt MetaLOM odpowiada pojedynczemu rekordowi. Obiekty te są następnie przesyłane do CMA (C2MA).

Rysunek  58.    Diagram  struktury  klasy  MetaLOM

LMS  service

LMS service stanowi zbiór komponentów przeznaczonych dla administratorów repozy-­‐ toriów umożliwiający przyłączenie zasobów ich repozytoriów bezpośrednio do DCM. Pakiet oprogramowania jest odpowiedzialny za utworzenie i uruchomienie kontenera zdalnego platformy ABSS, a następnie dokonanie jego rejestracji w kontenerze głównym platformy ABSS. Uruchomiany w ten sposób kontener zdalny tworzy środowisko które może obsługiwać agenta CA. Zarejestrowany kontener zdalny jest konieczny aby nastą-­‐ piła  migracja  agenta  CA  i  była  możliwa  dalsza  komunikacja  pomiędzy  nim  a  CMA.

Komunikacja pomiędzy CA a CMA jest oparta o zmodyWikowaną postać protokołu JICP (jicpABSS) oferowanego przez JADE-­‐LEAP zapewniającą bezpieczną komunikację pomiędzy kontenerami. Mechanizmy bezpieczeństwa uwzględniają szyfrowanie danych w oparciu o wykorzystany protokół SSL/TLS oferowany w Javie oraz wzajemne uwierzy-­‐ telnienia  oparte  o  podpisane  cyfrowe  certyWikaty.

Pakiet LMS Service wprowadza również mechanizm guard threads control który polega na kontroli komunikacji pomiędzy kontenerami i ewentualny restart konte-­‐ nera  zdalnego  jeśli  komunikacja  z  kontenerem  głównym  zostanie  utracona.

Schemat  działania  LMS  Service  został  przedstawiony  na  rysunku  59.

15. Do  realizacji  parsowania  wykorzystano:  DOMparser  stanowiący  składnik  Xerces2  Java   Parser  2.8.0.

Rysunek  59.    Schemat  działania  serwisu  LMS

Poniżej  przedstawiono  możliwości  uruchomienia  usługi  LMS:

Aplikacje  Javy:

public  static  void  main(String[]  args)  throws  InterruptedException    {        LMSAgentContainer.getInstance().start("./conf/lms.properties"); }

Środowisko  serwletów  lub  JSP:

ServletContext  sc  =  getServletContext(); InputStream  is  =

       sc.getResourceAsStream("/WEB-­‐INF/classes/lms.properties"); Properties  props  =  new  Properties();  

try  {  props.load(is);  }

catch  (IOException  e)  {  e.printStackTrace();  }

LMSAgentContainer.getInstance.start(props);

Przedstawione powyżej metody obrazują również dwa rożne podejścia w dostę-­‐ pie do pliku lms.properties. Ścieżka dostępu do niego może być wprowadzona jako ścieżka systemowa lub w ustawieniach serwletów. Ten drugi przypadek jest stosowany również i w przypadku uruchomienia usług LMS poprzez wywołanie metody:

SparkOAI.startService().

ServletContext  sc  =  getServletContext(); String  scPath=sc.getRealPath("");

sc.log("lms.properties  path  Path"+scPath);   InputStream  is  =

sc.getResourceAsStream("/WEB-­‐INF/classes/lms.properties"); Properties  props  =  new  Properties();

FireOAIRepository  localRepository  =  new  MinorOAIRepository(); SparkOAI  oai  =  SparkOAI.getInstance();

oai.setAutoMessageAccepted(true);

oai.setFireOAIRepository(localRepository); oai.properties  =  props;

oai.startService();

Strukturę  zależności  pomiędzy  komponentami  LMS  i  SparkOAI  przedstawia  rysunek  60.

Przykładowa  zawartość  pliku:    lms.properties

#  configuration  for  LMSAgentContainer  version  1.2 #  IDENTIFICATION

#  LMS  prefix  is  needed  to  send  CA  to  repositories

#  The  lack  of  LMS  prefix  disables  sending  agent  to  peripheral  container  is  possible

lms.container_name=LMS_unique_identifier

#  COMMUNICATION

#  IP  address,  where  main  container  operates  (ABSS  server)

lms.abss_host=149.156.114.77 lms.abss_port=8877

lms.local_server_port=1000 #  default  value:  9999

lms.local_client_port=2000 #  default  value:  lms.local_server_port+1   #  SSL/TLS

#  Transmission  is  encrypted  and  authenticated.  Authentication  is  performed,  if  paths

#  to  keyStore  and  trustStore  files  are  specified  and  these  files  are  available

#  Unix  example:

lms.keystore_file=./ssl/abss_privkey.jks lms.truststore_file=./ssl/public_store lms.authentication_phrase=PASSWORD

#  NAT

#  parameter  should  be  set  when  NAT  is  used

#lms.public_nat_ip=83.17.246.230  #default  value:  null #  HARVESTING  MODE

#  true  means  access  to  metadata  by  HTTP/HTTPS  protocol

lms.pmhoai=true

lms.pmhoai_url=http://81.26.9.91:8080/Minor2/OAIServlet

#  METADATA  FORMAT

metadataPrefix=http://fire.eun.org/xsd/strictLreResults-­‐1.0

#  MONITORING

#  delay  (ms)  no  answer  from  main  container  to  restart  peripheral  container

#lms.delay_jade_restart=30000 #  default  value:  30000  =  30  seconds     #

#  timeout  (ms)  no  transmission  CA-­‐CMA  to  restart  peripheral  container

#lms.timeout_cma_communication=1800000 #  default  value:  1800000  =  30  minutes #  LOGGING

#  LMS  logger  uses  jade.util.logger  -­‐  based  on  java.util.logger

lms.log_level=INFO #  default  value:  INFO #  accepted  values  for  lms.log_level

#  SEVERE  –  serious  failure

#  WARNING  –  potential  problem

#  INFO  –  informational  messages

#  CONFIG  –  configuration  messages

#  FINE  –  tracing  information

#  FINER  –  fairly  detailed  tracing  message

#  FINEST  –  highly  detailed  tracing  message

Wymagania stawiane lokalnym systemom w celu zapewnienia poprawnego dzia-­‐ łania  serwisu  LMS  schematycznie  przedstawiono  na  rysunku  61  [96].

• jeden  publiczny  port  TCP/IP  otwarty  na  połączenia  przychodzące  z  serwera  ABSS • jeden  port  kliencki  dla  połączeń  wychodzących

!

W dokumencie Index of /rozprawy2/10252 (Stron 81-87)