Latest web development tutorials

Lokalizator usługi wzór

wzór lokalizatora usług (Service Locator deseń) do stosowania w pozycjonowaniu chcemy korzystać z usług JNDI odnośników kiedy. Uwzględniając JNDI odnośnika wysoką cenę za usługę, wzór pełnego wykorzystania usługi Locator technologii buforowania. W pierwszym wniosku o serwis, usługi w służbie lokalizator JNDI odnośników i buforuje obiekt usługi. Ponowne zainteresowanie taką samą usługę, lokalizator usługa wygląda w swojej pamięci podręcznej, która może poprawić wydajność aplikacji w dużym stopniu. Poniższa jest podmiotem tego wzorca projektowego.

  • (Usługa) - Usługi faktycznie obsługi żądania.Odniesienia do tych usług można znaleźć na serwerze JNDI.
  • Kontekst / Initial Context - kontekst JNDI z usługą, którą chcesz znaleźć odniesienie.
  • Lokalizator usługi (Service Locator) - lokalizator usługa jest przez JNDI odnośników buforowania i usług, aby uzyskać jeden punkt obsługi kontaktów.
  • Pamięć podręczna (cache) - odniesienie do usług przechowywania cache, w celu ich ponownego wykorzystania.
  • Client (klient) - Klient obiektu wywołanie usługi poprzez ServiceLocator.

realizacja

StworzymyServiceLocator,InitialContext, cache, eksploatacji jako jednostka reprezentuje różne przedmioty.Service1iUsługa2stanowią usługi podmiotu.

ServiceLocatorPatternDemo,nasza klasa demo tutaj jako klient, zostaną wykorzystane w celu wykazania usługServiceLocatorprojektowania lokalizator wzór.

Lokalizator usługi wzór diagram UML

Etap 1

Stworzenie serwisu interfejsu usługi.

Service.java

Usługa {public interface
   public String getName ();
   public void execute ();
}

Etap 2

Tworzenie jednostki usługowej.

Service1.java

public class Service1 realizuje usługi {
   public void execute () {
      System.out.println ( "Wykonywanie Service1");
   }

   @Override
   public String getName () {
      w obie strony "Service1";
   }
}

Service2.java

public class Usługa2 realizuje usługi {
   public void execute () {
      System.out.println ( "Wykonywanie Usługa2");
   }

   @Override
   public String getName () {
      w obie strony "Usługa2";
   }
}

etap 3,

Tworzenie kwerendy dla JNDI InitialContext.

InitialContext.java

{public class InitialContext
   wyszukiwanie obiektów publicznych (String jndiName) {
      if (jndiName.equalsIgnoreCase ( "Service1")) {
         System.out.println ( "Patrząc w górę i tworząc nowy obiekt Service1");
         powrót nowego Service1 ();
      } Else if (jndiName.equalsIgnoreCase ( "Usługa2")) {
         System.out.println ( "Patrząc w górę i tworząc nowy obiekt Usługa2");
         powrót nowego Usługa2 ();
      }
      powrót null;		
   }
}

Etap 4

Tworzenie Cache Cache.

Cache.java

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

public class Cache {

   Lista <usługa> usługi prywatne;

   Cache publicznego () {
      Usługi = new ArrayList <usługa> ();
   }

   Publiczne Służby getService (String ServiceName) {
      for (Usługa Usługa:) {
         if (service.getName (). equalsIgnoreCase (ServiceName)) {
            System.out.println ( "Przywracanie pamięci podręcznej" + ServiceName + "obiekt");
            powrót usługę;
         }
      }
      powrót null;
   }

   public void addService (Service newService) {
      logiczna istnieje = false;
      for (Usługa Usługa:) {
         if (service.getName (). equalsIgnoreCase (newService.getName ())) {
            istnieje = true;
         }
      }
      if (! istnieje) {
         services.add (newService);
      }
   }
}

Etap 5

Tworzenie lokalizatora usług.

ServiceLocator.java

{public class ServiceLocator
   prywatne Cache Cache statyczna;

   static {
      cache = new Cache ();		
   }

   public static usługi getService (String jndiName) {

      Usługa Usługa = cache.getService (jndiName);

      if (service! = null) {
         powrót usługę;
      }

      InitialContext context = new InitialContext ();
      Service1 service = (Service) context.lookup (jndiName);
      cache.addService (Service1);
      powrót Service1;
   }
}

Etap 6

UżyjServiceLocatorwykazanie wzorca projektowego lokalizatora usług.

ServiceLocatorPatternDemo.java

{public class ServiceLocatorPatternDemo
   public static void main (String [] args) {
      Usługa Usługa = ServiceLocator.getService ( "Service1");
      service.execute ();
      service = ServiceLocator.getService ( "Usługa2");
      service.execute ();
      service = ServiceLocator.getService ( "Service1");
      service.execute ();
      service = ServiceLocator.getService ( "Usługa2");
      service.execute ();		
   }
}

Krok 7

Sprawdź, czy wyjście.

Patrząc w górę i tworząc nowy obiekt Service1
Wykonywanie Service1
Patrząc w górę i tworząc nowy obiekt Usługa2
Wykonywanie Usługa2
Wracając pamięci podręcznej obiektu Service1
Wykonywanie Service1
Wracając pamięci podręcznej obiektu Usługa2
Wykonywanie Usługa2