Technikai megjegyzések a BeenThere példához


Forráskód helye
Kódolási megjegyzések áttekintése


Forráskód helye

A BeenThere alkalmazás forráskódja a profil_gyökér/samples/src/BeenThere könyvtárban található, ahol a <profil_gyökér> a teljes képzésű elérési út a telepítéskezelő profilhoz.

z/OS felhasználók figyelmébe: A példák forráskódfája z/OS platformon nem áll rendelkezésre, mivel a példaalkalmazások összeépítése nem z/OS platformon történik.



Kódolási megjegyzések áttekintése

Áttekintés

A BeenThere alkalmazás bemutatja az IBM WebSphere Application Server Network Deployment Edition munkaterhelés-felügyelet képességeit. A BeenThere alkalmazás a BeenThere kiszolgáló kisalkalmazást és a BeenThere állapotnélküli munkamenet vállalati komponenst tartalmazza. A BeenThere kiszolgáló kisalkalmazás szemlélteti az alkalmazáskiszolgálót egy olyan fürtben, amelyhez egy HTTP kérés lett elküldve. A BeenThere vállalati komponens szemlélteti az alkalmazáskiszolgálót egy olyan fürtben, amelyhez egy vállalati komponens kérés lett elküldve. A BeenThere vállalati komponenst a BeenThere kiszolgáló kisalkalmazás hívja meg.

A BeenThere kiszolgáló kisalkalmazás a következő információkat jeleníti meg:


Ezen felül a BeenThere kiszolgáló kisalkalmazás a következő műveleteket tudja végrehajtani:


Környezet

A Webtároló és EJB tároló munkaterhelés-felügyelet bemutatására használt példakörnyezet a következő ábrában látható:



1. ábra   A példakörnyezet


Ebben a környezetben lévő gépek tartalmaznak:



A konfiguráció két kiszolgálófürtöt tartalmaz, a MyWebCluster és a MyEJBCluster fürtöket. A kiszolgálófürt alkalmazáskiszolgálók egy csoportjából áll. Ha a kiszolgálók egyik tagja meghibásodik, akkor a kérések a fürt más tagjai felé lesznek továbbítva. A példa minden egyes fürtje két fürttagból áll. A MyWebCluster fürt a WebServer1 és a WebServer2 fürttagokból áll, a MyEJBCluster pedig az EJBServer1 és az EJBServer2 fürttagokból.

Ez a beállított környezet egy példa, ami csak a BeenThere alkalmazás futtatásának bemutatására szolgál. Éles környezetben óvatosan kell tervezni az erőforráskapacitást annak meghatározására, hogy egy bizonyos számú géphez a várható ügyfélkérés-terhelés alapján mennyi alkalmazáskiszolgáló tag legyen létrehozva.

Munkaterhelés-felügyelet

A WebSphere Application Server Network Deployment Edition biztosítja a HTTP kérések és EJB kérések munkaterhelés-felügyelet (WLM) kezelését.

Webtároló munkaterhelés-felügyelet

A HTTP kérések munkaterhelés-felügyeletét a webkiszolgáló bedolgozó kezeli.

Figyelje az 1. ábra konfigurációját. A web gép egy IBM HTTP Server-t futtat, ami elküldi a HTTP kéréseket az összes WebServer1 és WebServer2 alkalmazáskiszolgálónak, amelyek magukba foglalják a MyWebCluster fürt tagjait és a BeenThere kiszolgáló kisalkalmazást futtatják. Értelemszerűen ezek az alkalmazáskiszolgálók az app1 és app2 gépeken vannak beállítva. Továbbá az IBM HTTP Server bedolgozó úgy van beállítva, hogy a WebServer1 WLM tömege 2, a WebServer2 WLM tömege pedig 3. A tömegekre gondoljon úgy, mint számlálókra, amelyek a saját beállított értékeikről indulnak, és minden egyes kiszolgált kérés után az értékük 1-gyel csökken. A kérések egy körbeforgó folyamat használatával kerülnek elküldésre bármely alkalmazáskiszolgáló felé, aminek a tömegszámláló értéke pillanatnyilag nagyobb, mint 0. Ha az érték 0, akkor az alkalmazáskiszolgáló kimarad. Miután az összes tömegszámláló 0-ra csökkent, az összes alkalmazáskiszolgáló tömegszámlálója visszaáll a saját beállított értékére, és a küldési folyamat újból elindul.

EJB tároló munkaterhelés-felügyelet

Az EJB kérések munkaterhelés-felügyeletét a WLM vezérlő belsőleg kezeli a WebSphere Application Server alkalmazásban.

Figyelje az 1. ábra konfigurációját. A megadott MyEJBCluster fürt az EJBServer1 és az EJBServer2 alkalmazáskiszolgáló tagokból áll, amelyek a BeenThere állapotnélküli munkamenet vállalati komponens futtatásáért felelnek. A BeenThere kiszolgáló kisalkalmazás meghívja a vállalati komponenst, hogy végrehajtási információkat szerezzen be arról az alkalmazáskiszolgálóról, amelyiken a vállalati komponens fut. Továbbá ezeknek a kiszolgálóknak a beállított tömegértékei értelemszerűen 1 és 3.

z/OS platformokon a tömegértékek a HTTP kérések egyensúlyban tartására használatosak, de nem használhatók az Internet Inter-ORB Protocol (IIOP) kérések egyensúlyozására.

WebSphere adminisztrátori alkalmazás programozási felületek

A BeenThere alkalmazás a WebSphere Application Server alkalmazás programozási felületeit használja. Ezekkel a felületekkel az alkalmazások hozzáférhetnek futási és környezeti konfigurációs információkhoz:


AdminService

Kiszolgáló oldali felületeket biztosít az alkalmazáskiszolgáló attribútuminformációk lekérdezéséhez, valamint a képességet szabványos JMX MBean management funkciók végrehajtásához.

AdminClient

Ügyfél oldali felületeket biztosít egy távoli AdminService objektumhoz. Az AdminClient osztály egy proxy-t biztosít a távoli AdminService objektumhoz a Java Management Extensions (JMX) csatlakozók egyikén keresztül.

ConfigService

Felületeket biztosít a konfigurációs adatok lekérdezéséhez vagy módosításához helyileg vagy távolról, valamint alkalmazáskiszolgáló konfiguráció dokumentumainak helyét és tartalmát kezeli.

Az alkalmazások erejének és rugalmasságának bemutatására amikor a WebSphere Application Server adminisztrátori felületeit használják, a BeenThere alkalmazás ezen felületek mindegyikét az alábbi módon alkalmazza:


AdminService

Az AdminService felületet mind a BeenThere kiszolgáló kisalkalmazás, mind a vállalati komponens a csomópontnév, alkalmazáskiszolgáló-név és annak az alkalmazáskiszolgálónak a folyamatazonosítójának a lekérdezésére használja, amelyiken fut. Az alábbi kódszegmens szemlélteti a kiszolgáló attribútuminformációinak megszerzését:


// A WebSphere AdminService megszerzése.
AdminService adminService = AdminServiceFactory.getAdminService();

// A WebSphere Admin Local Server MBean egyed megszerzése.
ObjectName localServer = adminService.getLocalServer();

// A csomópontnév megszerzése.
nodeName = (String) adminService.getAttribute(localServer, "nodeName");

// Az Application Server nevének megszerzése.
serverName = (String) adminService.getAttribute(localServer, "name");

// Az Application Server folyamatazonosítójának megszerzése.
serverPid = (String) adminService.getAttribute(localServer, "pid");

AdminClient

Az AdminClient felület telepítéskezelő folyamathoz való kapcsolódására használatos annak a fürtnek az összes alkalmazáskiszolgáló-tag fürttagja tömegértékének lekérdezésére, amelyik a BeenThere vállalati komponenst futtatja. Az alábbi kódszegmens szemlélteti az AdminClient felület egy egyedének a megszerzését:


// A WebSphere AdminService megszerzése.
AdminService adminService = AdminServiceFactory.getAdminService();

// Az AdminClient egyed megszerzése a telepítéskezelőnek.
adminClient = adminService.getDeploymentManagerAdminClient();

ConfigService

A ConfigService felület a WebSphere Application Server cell.xml konfigurációs dokumentumának olvasására használatos, annak meghatározása céljából, hogy a BeenThere alkalmazás egy WebSphere Application Server Base Edition vagy egy Network Deployment Edition környezetben fut. Az alábbi kódszegmens szemlélteti egy olyan környezet meghatározásának módját, amiben egy alkalmazás fut:


// Hozzon létre egy új WebSphere Management Session-t.
Session session = new Session();

// Szerezze meg a WebSphere ConfigService egyedet ezt a kiszolgáló
// kisalkalmazást végrehajtó alkalmazáskiszolgálónak.
ConfigService configService = ConfigServiceFactory.getConfigService();
if (configService != null)
{
  // Olvassa be a cell.xml dokumentumot.
  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;
    }
  }

  // Szabadítsa fel a munkamenetet.
  configService.discard(session);

Ha egy Network Deployment környezet fordult elő, akkor a Display komponens fürttag tömegek lehetőség engedélyezve van és megjelenik, mert ez a lehetőség csak az ilyen típusú környezetekben érvényes. Más esetben ez a lehetőség nem jelenik meg kiválasztható elemként.