Technické poznámky k ukázkové aplikaci BeenThere


Vyhledání zdrojového kódu
Kontrola poznámek ke kódu


Vyhledání zdrojového kódu

Zdrojový kód pro aplikaci BeenThere je umístěn v adresáři kořen_profilu/samples/src/BeenThere, kde parametr <kořen_profilu> odpovídá úplné cestě k profilu správce implementace.

Zákazníci se systémem z/OS: Na platformě z/OS není strom zdrojového kódu ukázek k dispozici, protože ukázkové aplikace nejsou pro platformu z/OS sestaveny.



Kontrola poznámek ke kódu

Přehled

Aplikace BeenThere demonstruje možnosti správy pracovní zátěže (WLM) produktu IBM WebSphere Application Server Network Deployment Edition. Aplikace BeenThere obsahuje servlet BeenThere a bezstavový objekt BeenThere typu session enterprise bean. Servlet BeenThere demonstruje činnost aplikačního serveru v klastru, pro který je zpracováván požadavek HTTP. Objekt BeenThere typu enterprise bean demonstruje činnost aplikačního serveru v klastru, pro který je zpracováván požadavek na objekt enterprise bean. Objekt BeenThere typu enterprise bean je vyvoláván servletem BeenThere.

Servlet BeenThere zobrazuje následující informace:


Kromě toho může servlet BeenThere provádět následující akce:


Prostředí

Prostředí ukázky použité pro demonstraci správy pracovní zátěže webového kontejneru a kontejneru EJB je znázorněno na následujícím obrázku:



Obrázek 1: Prostředí ukázky


Mezi počítače v tomto prostředí patří následující:



Konfigurace obsahuje dva serverové klastry: MyWebCluster a MyEJBCluster. Serverový klastr je tvořen skupinou aplikačních serverů. Dojde-li k selhání jednoho z členských serverů, budou požadavky směrovány na ostatní členy klastru. Každý z ukázkových klastrů sestává ze dvou členů klastru. Klastr MyWebCluster obsahuje členy klastru WebServer1 a WebServer2, klastr MyEJBCluster obsahuje členy klastru EJBServer1 a EJBServer2.

Toto konfigurované prostředí je ukázkou použitou pouze pro demonstraci spouštění aplikace BeenThere. V provozním prostředí je třeba provádět pečlivé plánování prostředků, aby bylo možné určit počet členů aplikačního serveru, kteří mají být vytvořeni v rámci konkrétního počtu počítačů, na základě očekávané zátěže klientskými požadavky.

Správa pracovní zátěže

Produkt WebSphere Application Server Network Deployment Edition poskytuje správu pracovní zátěže (WLM) pro požadavky HTTP a požadavky EJB.

Správa pracovní zátěže webového kontejneru

Správa pracovní zátěže pro požadavky HTTP je řízena modulem plug-in webového serveru.

Prohlédněte si konfiguraci na obrázku 1. V počítači web je spuštěn server IBM HTTP Server, který zpracovává požadavky HTTP na každý z aplikačních serverů WebServer1 a WebServer2, které sestávají ze členů klastru MyWebCluster a je v nich spuštěn servlet BeenThere. Tyto aplikační servery jsou konfigurovány v počítačích app1 a app2 v uvedeném pořadí. Kromě toho je modul plug-in serveru IBM HTTP Server konfigurován tak, aby měl server WebServer1 nastavenou váhu WLM 2 a počítač WebServer2 měl nastavenou váhu WLM 3. Váhy si lze představovat jako čítače spouštěné s konfigurovanou hodnotou, přičemž se hodnota snižuje o 1 po zpracování každého požadavku. Požadavky jsou zpracovávány metodou round-robin (každý s každým) pro každý aplikační server, jehož aktuální hodnota čítače váhy je větší než 0. V případě hodnoty 0 je aplikační server vynechán. Po snížení všech čítačů váhy na hodnotu 0 jsou obnoveny konfigurované hodnoty čítačů váhy všech aplikačních serverů a proces zpracování začíná znovu.

Správa pracovní zátěže kontejneru EJB

Správa pracovní zátěže pro požadavky EJB je řízena interně řadičem správy WLM v rámci produktu WebSphere Application Server.

Prohlédněte si konfiguraci na obrázku 1. Je definován klastr MyEJBCluster sestávající ze členů aplikačního serveru EJBServer1 a EJBServer2, kteří jsou odpovědní za spouštění bezstavového objektu BeenThere typu session enterprise bean. Servlet BeenThere provádí volání objektu enterprise bean s cílem získat informace o zpracování týkající se aplikačního serveru se spuštěným objektem enterprise bean. Kromě toho jsou tyto servery konfigurovány s použitím hodnot váhy 1 a 3 v uvedeném pořadí.

Na platformě z/OS se hodnoty váhy používají k vyvažování zátěže požadavků služby HTTP, nepoužívají se však k vyvažování zátěže požadavků protokolu IIOP (Internet Inter-ORB Protocol).

Administrativní rozhraní API pro platformu WebSphere

Aplikace BeenThere využívá rozhraní API pro administraci v prostředí WebSphere Application Server. Prostřednictvím těchto rozhraní mají aplikace přístup ke konfiguračním informacím běhových komponent a prostředí:


AdminService

Poskytuje rozhraní na straně serveru pro získávání informací o atributech aplikačního serveru i možnost provádění standardních funkcí správy modulu JMX MBean.

AdminClient

Poskytuje klientská rozhraní pro vzdálený objekt AdminService. Třída AdminClient poskytuje zástupce pro vzdálený objekt AdminService prostřednictvím některého z konektorů JMX (Java Management Extensions).

ConfigService

Poskytuje rozhraní pro zadávání dotazů nebo úpravy konfiguračních dat (lokálně nebo vzdáleně) a spravuje umístění a obsah konfiguračních dokumentů aplikačního serveru.

V rámci demonstrace výkonu a flexibility, které mají aplikace k dispozici při používání administrativních rozhraní produktu WebSphere Application Server, využívá aplikace BeenThere všechna tato rozhraní následujícími způsoby:


AdminService

Rozhraní AdminService je používáno servletem BeenThere a objektem enterprise bean k získávání názvu uzlu, názvu aplikačního serveru a ID procesu pro aplikační server, na kterém jsou spuštěny. Následující úsek kódu demonstruje způsob získávání informací o atributech serveru:


// Získání rozhraní AdminService produktu WebSphere.
AdminService adminService = AdminServiceFactory.getAdminService();

// Získání instance Admin Local Server MBean pro produkt WebSphere.
ObjectName localServer = adminService.getLocalServer();

// Získání názvu uzlu.
nodeName = (String) adminService.getAttribute(localServer, "nodeName");

// Získání názvu aplikačního serveru.
serverName = (String) adminService.getAttribute(localServer, "name");

// Získání ID procesu aplikačního serveru.
serverPid = (String) adminService.getAttribute(localServer, "pid");

AdminClient

Rozhraní AdminClient se používá pro připojování k procesu správce implementace s cílem načíst hodnoty váhy členů klastru pro všechny členy aplikačního serveru v klastru se spuštěným objektem BeenThere typu enterprise bean. Následující úsek kódu demonstruje způsob získávání instance rozhraní AdminClient:


// Získání rozhraní AdminService produktu WebSphere.
AdminService adminService = AdminServiceFactory.getAdminService();

// Získání instance rozhraní AdminClient pro správce implementace.
adminClient = adminService.getDeploymentManagerAdminClient();

ConfigService

Rozhraní ConfigService se používá ke čtení konfiguračního dokumentu cell.xml produktu WebSphere Application Server s cílem určit, zda je aplikace BeenThere spuštěna v prostředí WebSphere Application Server Base Edition nebo Network Deployment Edition. Následující úsek kódu demonstruje způsob určení prostředí, ve kterém je aplikace spuštěna:


// Vytvoření nové relace správy produktu WebSphere.
Session session = new Session();

// Získání instance rozhraní ConfigService produktu WebSphere
// pro aplikační server, na kterém je tento servlet spouštěn.
ConfigService configService = ConfigServiceFactory.getConfigService();
if (configService != null)
{
  // Čtení dokumentu 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;
    }
  }

  // Uvolnění relace.
  configService.discard(session);

Je-li zjištěno prostředí Network Deployment, je povolena a zobrazena volba zobrazování váhy členů klastru pro objekt bean, protože tato volba je platná pouze v tomto typu prostředí. V opačném případě nebude volba zobrazena jako volba s možností výběru.