Note tehnice pentru exemplul BeenThere


Localizarea codului sursă
Examinarea notelor despre codare


Localizarea codului sursă

Codul sursă pentru aplicaţia BeenThere se află în directorul profile_root/samples/src/BeenThere, unde <profile_root> este calea complet calificată la profilul manager implementare.

z/OS: Codul sursă pentru Exemple nu este furnizat pe platforma z/OS deoarece aplicaţiile Exemplu nu sunt construite pe platforma z/OS.



Examinarea notelor despre codare

Privire generală

Aplicaţia BeenThere demonstrează capabilităţile de management al încărcării de lucru (WLM) ale IBM WebSphere Application Server Network Deployment Edition. Aplicaţia BeenThere conţine servletul BeenThere şi bean-ul enterprise sesiune fără menţinere de stare BeenThere. Servletul BeenThere demonstrează serverul de aplicaţii într-un cluster la care este dispecerizată cererea HTTP. Bean-ul enterprise BeenThere demonstrează serverul de aplicaţii într-un cluster la care este dispecerizată o cerere de bean enterprise. Bean-ul enterprise BeenThere este invocat de servletul BeenThere.

Servletul BeenThere afişează următoarele informaţii:


În plus, servletul BeenThere poate realiza următoarele acţiuni:


Mediu

Mediul Exemplului care este folosit pentru a demonstra managementul încărcării de lucru pentru containerul Web şi containerul EJB este descris în următoarea ilustraţie.



Figura 1   Mediul Exemplului


Maşinile în acest mediu includ:



Configuraţia conţine două clustere de servere, MyWebCluster şi MyEJBCluster. Un cluster de servere constă din grup de servere de aplicaţii. Dacă unul din serverele membre eşuează, cererile sunt rutate la alţi membri din cluster. Fiecare din clusterele Exemplului sunt constituite din doi membri de cluster. Cluster-ul MyWebCluster constă din doi membri, WebServer1 şi WebServer2, iar cluster-ul MyEJBCluster constă din membrii EJBServer1 şi EJBServer2.

Acest mediu configurat este un Exemplu care este folosit pentru a demonstra cum se rulează aplicaţia BeenThere. Într-un mediu de producţie, planificarea cu grijă a capacităţii de resurse trebuie făcută pentru a determina câţi membri server de aplicaţii trebuie creaţi pe un anumit număr de maşini, în funcţie de încărcarea cererilor de client aşteptată.

Managementul încărcării de lucru

WebSphere Application Server Network Deployment Edition furnizează managementul încărcării de lucru (WLM) pentru cererile HTTP şi cererile EJB.

Managementul încărcării de lucru container Web

Managementul încărcării de lucru pentru cererile HTTP este tratat de plug-in-ul serverului Web.

Luaţi în considerare configuraţia din Figura 1. Maşina web rulează un IBM HTTP Server care dispecerizează cererile HTTP la fiecare din serverele de aplicaţii WebServer1 şi WebServer2 care compun membrii clusterului MyWebCluster şi care rulează servletul BeenThere. Aceste servere de aplicaţii sunt configurate pe maşinile app1 şi respectiv app2. În plus, IBM HTTP Server plug-in este configurat astfel încât WebServer1 are o pondere WLM de 2 şi WebServer2 are o pondere WLM de 3. Puteţi să vă gândiţi la ponderi ca la nişte contoare care pornesc la valoarea lor configurată şi se decrementează cu 1 după ce fiecare cerere este servită. Cererile sunt dispecerizate folosind un proces round-robin (pe rând la fiecare) la toate serverele de aplicaţii care au curent o valoare de contor pondere mai mare decât 0. Dacă valoarea este 0, serverul de aplicaţii este sărit. După ce toate contoarele de ponderi sunt decrementate la 0, atunci toate contoarele de ponderi servere de aplicaţii sunt resetate la valoarea lor configurată şi procesul de dispecerizare o ia de la început.

Managementul încărcării de lucru container EJB

Managementul încărcării de lucru pentru cererile EJB este tratat de controlerul WLM din WebSphere Application Server.

Luaţi în considerare configuraţia din Figura 1. Este definit un cluster MyEJBCluster care este compus din membrii server de aplicaţii EJBServer1 şi EJBServer2 care sunt responsabili pentru rularea bean-ului enterprise sesiune fără menţinere de stare BeenThere. Servletul BeenThere face un apel la bean-ul enterprise pentru a obţine informaţii de execuţie despre serverele de aplicaţii în care rulează bean-ul eterprise. Mai departe, aceste servere sunt configurate cu valori pondere de 1 şi respectiv 3.

Pe platforma z/OS, valorile de pondere sunt folosite pentru a echilibra cererile HTTP, dar nu sunt folosite pentru a echilibra cererile IIOP (Internet Inter-ORB Protocol).

Interfeţele de programare aplicaţii (API-uri) adminisrative WebSphere

Aplicaţiile BeenThere utilizează API-urile administrative din WebSphere Application Server. Cu aceste API-uri se pot accesa informaţiile de run-time şi de configuraţie mediu.


AdminService

Furnizează interfeţele pe partea serverului pentru a obţine informaţii de atribute server de aplicaţii, precum şi abilitatea de a realiza funcţii standard de management JMX MBean.

AdminClient

Furnizează interfeţe pe partea client la un obiect AdminService la distanţă. Clasa AdminClient furnizează un proxy la obiectul AdminService de la distanţă, prin unul din conectorii JMX (Java Management Extensions) suportaţi.

ConfigService

Furnizează interfeţe pentru a interoga sau modifica datele de configuraţie, local sau la distanţă, şi gestionează locaţia şi conţinutul documentelor de configuraţie a serverului de aplicaţii.

Pentru a demonstra puterea şi flexibilitatea pe care le au aplicaţiile când folosesc interfeţele administrative WebSphere Application Server, aplicaţia BeenThere utilizează toate aceste interfeţe în următoarele moduri:


AdminService

Interfaţa AdminService este folosită atât de servletul BeenThere, cât şi de bean-ul enterprise pentru a obţine numele nodului, numele serverului de aplicaţii şi ID-ul procesului pentru serverul de aplicaţii în care rulează. Următorul segment de cod demonstrează cum să se obţină informaţiile de atribute server:


// Obţinere WebSphere AdminService.
AdminService adminService = AdminServiceFactory.getAdminService();

// Obţinere instanţă WebSphere Admin Local Server MBean.
ObjectName localServer = adminService.getLocalServer();

// Obţinere nume nod.
nodeName = (String) adminService.getAttribute(localServer, "nodeName");

// Obţinere nume Application Server.
serverName = (String) adminService.getAttribute(localServer, "name");

// Obţinere Application Server Process Id.
serverPid = (String) adminService.getAttribute(localServer, "pid");

AdminClient

Interfaţa AdminClient este folosită pentru conectarea la procesul manager de implementare pentru a extrage valorile de pondere ale membrului de cluster pentru toţi membrii servere de aplicaţii ai clusterului care rulează bean-ul enterprise BeenThere. Următorul segment de cod demonstrează cum să se obţină o instanţă a interfeţei AdminClient.


// Obţinere WebSphere AdminService.
AdminService adminService = AdminServiceFactory.getAdminService();

// Obţinere instanţă AdminClient pentru manager implementare.
adminClient = adminService.getDeploymentManagerAdminClient();

ConfigService

Interfaţa ConfigService este folosită pentru a citi documentul de configuraţie WebSphere Application Server, cell.xml, pentru a determina dacă aplicaţia BeenThere rulează într-un mediu WebSphere Application Server Base Edition sau Network Deployment Edition. Următorul segment de cod demonstrează cum să se determine mediul în care aplicaţia rulează.


// Creare o nouă sesiune de administrare WebSphere.
Session session = new Session();

// Obţinere instanţă WebSphere ConfigService
// pentru serverul de aplicaţie care execută acest servlet.
ConfigService configService = ConfigServiceFactory.getConfigService();
if (configService != null)
{
  // Citire document cell.xml.
  ObjectName cellObj = ConfigServiceHelper.createObjectName(null, "Cell");
  ObjectName[] cellObjs = configService.queryConfigObjects(session, null, cellObj, null);

  if (cellObjs.length != 0)
  {
    cellObj = cellObjs[0];
    String cellName = (String) configService.getAttribute(session, cellObj, "name");
    String cellType = (String) configService.getAttribute(session, cellObj, "cellType");
    if (cellType.equals("DISTRIBUTED"))
    {
      websphereND = true;
    }
  }

  // Eliberare sesiune.
  configService.discard(session);

Dacă este detectat un mediu Network Deployment, atunci este activată opţiunea Afişare ponderi membri cluster bean şi este afişată, deoarece această opţiune este validă doar în acest tip de mediu. Altfel, această opţiune nu este afişată ca o opţiune selectabilă.