Latest web development tutorials

modello Service Locator

modello Service Locator (Service Locator Pattern) per l'uso nel posizionamento si desidera utilizzare i servizi di ricerca JNDI quando. Tenendo conto del prezzo elevato JNDI di ricerca per un servizio, il modello Service Locator pieno uso della tecnologia di caching. Nella prima richiesta di un servizio, il servizio nel servizio di individuazione JNDI lookup, e memorizza nella cache l'oggetto del servizio. Quando si richiede di nuovo lo stesso servizio, il localizzatore servizio si presenta nella sua cache, che può migliorare le prestazioni delle applicazioni in larga misura. Di seguito è un'entità di questo modello di progettazione.

  • Servizio (Service) - servizi effettivamente gestisce la richiesta.I riferimenti a questi servizi possono essere trovati sul server JNDI.
  • Contesto / Initial Context - Context JNDI con un servizio che si vuole trovare un punto di riferimento.
  • Il localizzatore di servizio (Service Locator) - servizio di individuazione è attraverso servizi di ricerca e caching JNDI per ottenere un unico punto di contatto di servizio.
  • Cache (Cache) - un riferimento ai servizi di stoccaggio di cache, per riutilizzarli.
  • Client (Client) - Cliente oggetto invocazione del servizio attraverso ServiceLocator.

realizzazione

CreeremoServiceLocator,InitialContext, Cache, servizio come entità rappresenta vari oggetti.Service1eServizio2rappresentano servizi di entità.

ServiceLocatorPatternDemo, lanostra classe demo qui come un cliente, verrà utilizzata per dimostrare servizioServiceLocatordesign pattern locator.

modello Service Locator diagramma UML

fase 1

Creare un servizio interfaccia di servizio.

Service.java

Servizio interfaccia pubblica {
   public String getName ();
   public void execute ();
}

fase 2

Creare un ente di servizio.

Service1.java

public class Service1 implementa servizio {
   public void execute () {
      System.out.println ( "Esecuzione Service1");
   }

   @Override
   public String getName () {
      tornare "Service1";
   }
}

Service2.java

public class Service2 implementa servizio {
   public void execute () {
      System.out.println ( "Esecuzione Service2");
   }

   @Override
   public String getName () {
      tornare "Service2";
   }
}

fase 3

Creare una query per il JNDI InitialContext.

InitialContext.java

public class InitialContext {
   lookup oggetto pubblico (String JndiName) {
      if (jndiName.equalsIgnoreCase ( "Service1")) {
         System.out.println ( "Alzando gli occhi e la creazione di un nuovo oggetto Service1");
         restituire nuova Service1 ();
      } Else if (jndiName.equalsIgnoreCase ( "Service2")) {
         System.out.println ( "Alzando gli occhi e la creazione di un nuovo oggetto Service2");
         restituire nuova Service2 ();
      }
      restituire null;		
   }
}

fase 4

Crea Cache Cache.

Cache.java

import java.util.ArrayList;
import java.util.List;

public class Cache {

   List <Servizio> servizi privati;

   Cache pubblico () {
      servizi = new ArrayList <Servizio> ();
   }

   pubblico servizio getService (String serviceName) {
      per (Servizio: Servizi) {
         if (service.getName (). equalsIgnoreCase (serviceName)) {
            System.out.println ( "ritorno cache" + serviceName + "oggetto");
            servizio di ritorno;
         }
      }
      restituire null;
   }

   addService public void (Servizio NuovoServizio) {
      booleano esiste = false;
      per (Servizio: Servizi) {
         if (service.getName (). equalsIgnoreCase (newService.getName ())) {
            esiste = true;
         }
      }
      if (! esiste) {
         services.add (NuovoServizio);
      }
   }
}

fase 5

Creare un localizzatore di servizio.

ServiceLocator.java

public class ServiceLocator {
   Cache cache statica privato;

   static {
      cache = new Cache ();		
   }

   Servizio public static getService (String JndiName) {

      Servizio = cache.getService (JndiName);

      if (servizio! = null) {
         servizio di ritorno;
      }

      InitialContext context = new InitialContext ();
      Servizio service1 = (Service) context.lookup (JndiName);
      cache.addService (service1);
      tornare service1;
   }
}

passo 6

UtilizzareServiceLocatorper dimostrare il modello di progettazione servizio di individuazione.

ServiceLocatorPatternDemo.java

public class ServiceLocatorPatternDemo {
   Main (string [] args) {public static void
      Servizio = ServiceLocator.getService ( "Service1");
      service.execute ();
      service = ServiceLocator.getService ( "Service2");
      service.execute ();
      service = ServiceLocator.getService ( "Service1");
      service.execute ();
      service = ServiceLocator.getService ( "Service2");
      service.execute ();		
   }
}

passo 7

Verifica uscita.

Alzando gli occhi e la creazione di un nuovo oggetto Service1
Esecuzione Service1
Alzando gli occhi e la creazione di un nuovo oggetto Service2
Esecuzione Service2
Tornando oggetto Service1 cache
Esecuzione Service1
Tornando oggetto Service2 cache
Esecuzione Service2