{autotoc}

Üzleti alkalmazások készítésének eszközei a Java-ban (J2EE)

Java Enterprise Edition (a nagyvállalati Java platform)

Computerworld 1999. év 38. szám (részlet)

A Java 2 Enterprise Edition a kiszolgálóoldali, n rétegű Java alkalmazások szabványát határozza meg. A Java 2 EE támogatja az EJB technológián alapuló komponenseket, a Java Servlet API-t és a JSP technológiát. A Java 2 EE platform kihasználja a Standard Edition előnyeit, akárcsak az írd meg egyszer, futtasd bárhol alapelvből adódó hordozhatóság lehetőségét. A JDBC elérhetővé teszi az adatbázisokat, a CORBA technológián keresztül pedig lehetőség van a már meglevő kiszolgálóoldali komponensek elérésére; a specifikáció ezenkívül biztonsági modellt is ad a (hálózati) kiszolgálóoldali tranzakciókhoz. A Java 2 EE szabvány tartalmazza a teljes specifikációt és együttműködési teszteket, hogy az alkalmazások valóban hordozhatók legyenek.

A Java 2 EE keretrendszer a következő technológiákat integrálja

  • Enterprise Java Beans (újrafelhasználható kódmodulok);
  • Java Servletek és JavaServer Pages (szabványos kiszolgálóoldali Java szoftverek);
  • JDBC (Java alapú adatbázis-elérés);
  • Java Transaction API (interfész elosztott tranzakciókhoz hálózati környezetben);
  • XML (gyártótól független jelölőnyelv adatorientált dokumentumrendszerekhez).

A vállalati fejlesztőknek az Enterprise Edition bejelentése a legfontosabb, mert lehetőséget teremt arra, hogy az elosztott rendszerek az interneten és intraneten teljes egészében szabványos Java komponenstechnológiával épüljenek fel. A különböző komponeskonténerek - mint a Web, az Applet, vagy az EJB - adják a komponensek működéséhez szükséges szabványos környezetet, egyszerűbbé teszik a programozást, és lehetőséget adnak a kód nagy részének automatikus generálására.

A szokásos rétegek (megjelenítési réteg, üzleti logikai réteg, hagyományos alkalmazások és tárolók rétege) kiegészültek egy kiszolgálóoldali prezentációs réteggel; ez jeleníti meg az üzleti információkat a HTML-es ügyfeleknek; ebbe a rétegbe került a Java Server Pages és a servlet technológia. Az Enterprise API-kra nem az újabb specifikációk megjelenése volt a jellemző, hanem a továbbfejlődés mellett a teljes konzisztencia megteremtése. A J2EE-nek része a Java Server Pages, az Enterprise Java Beans, a Servlet, az IIOP, a Transactions és a Messaging interfész. 

Hálózatkezelést támogató osztályok

A java.net csomag a kommunikációval és a hálózati erőforrások elérésével kapcsolatos osztályokat tartalmazza.

Két részre csoportosítható:

  • Socket-ekkel kapcsolatos osztályok:
    A Jáva Socket interfészének segítségével elérhetjük az Interneten használt alapvető hálózati protokollokat
  • URL (Uniform Resource Locator) kezeléssel kapcsolatos osztályok:
    Segítséget nyújt a hálózati erőforrások eléréséhez. (Pl. dokumentumok, programok, egyéb adatállományok)

A java.net csomag osztályai

Socket-ek

  • A socket-ek alacsony szintű programozási interfészt nyújtanak a hálózati kommunikációhoz.
  • A programok közti adatcserét folyamokon keresztül oldják meg.
  • A Jáva különböző típusú socket-eket biztosít a két alapvetően elkülönülő hálózati protokollra: kapcsolat-orientált protokoll (Socket osztály) A kapcsolat felépítése után a két program, mint egy telefonon keresztül kommunikálhat egymással, míg a kapcsolatot az egyik fél meg nem szünteti.
  • A kapcsolat nélküli protokoll (DatagramSocket osztály): a kommunikáció csak rövid üzenetek formájában zajlik.

Servlet

A servlet egy speciális Java program, amely egy webszerverrel szorosan együtt működve lehetővé teszi HTML oldalak dinamikus létrehozását és paraméterezését különböző átviteli (például HTTP) protokollokon keresztül. Egy servlet a webszervernek ugyanaz mint az applet a böngészőnek – csak nem rendelkezik grafikus felülettel. Nincs is rá szükség, mivel a servletek -- mint a név is mutatja -- csakis szerver funkciókat képesek elvégezni. Pontosabban a webszerver funkcionalitását lehet velük kibővíteni, mert ha egy kliens olyan HTML oldalt kér a webszervertől, amit egy servlet állít elő, akkor a webszerver tulajdonképp csak delegálja a kérést a servlet felé, majd a servlet által generált oldalt továbbítja a kliensnek.

  • A webszerver delegálja az oldal kérést a servlet felé, majd a servlet által generált oldalt továbbítja a kliens felé.
  • A javax.servlet csomag tartalmazza az összes servlet-specifikus osztályt és interfészt.
  • Minden servlet vagy a javax.servlet.GenericServlet leszármazottja, vagy maga implementálja a javax.servlet.Servlet interfészt, amely az általános servlet életciklus metódusokat specifikálja.

A WWW-n elterjedt, a klienssel való kommunikációra HTTP protokollt használó servletek mindig a javax.servlet.http.HttpServlet leszármazottai. A javax.servlet.http alcsomag a HTTP-hez kapcsolódó speciális szolgáltatások elérését biztosító típusokat tartalmazza.

A HTML oldalak dinamikus generálására használt CGI (Common Gateway Interface) megoldásokkal szemben a servletek előnyei:

  • platformfüggetlen megoldást biztosítanak a rendszerint platformfüggő CGI-script megvalósításokkal szemben
  • a webszerveren belül állandóan futó virtuális gép sokkal gyorsabb kiszolgálást eredményez, mivel elmarad a minden kérés kiszolgálásához szükséges külső programindítás
  • egy servlet átirányíthatja a kérést egy másik servlethez, ezáltal dinamikusan lehet alkalmazkodni a webszerver terheltségéhez
  • egy servlet könnyen megőrizhet információkat az azonos helyről jövő egymás utáni kérések kiszolgálása között.

A servleteket csakis olyan webszervereken lehet használni, melyek támogatják a servlet API-t és képesek Java programok futtatására.

A lefordított servlet bájtkódját a webszerver előre megadott alkönyvtárába kell másolni. Ez a webszerver konfigurációjától függ, de általában egy servlets nevű alkönyvtárat szoktak használni.

Servlet megszűntetése

Ha nincs szükség tovább az adott servlet szolgáltatásaira, akkor a webszerver megszüntetheti a servlet példányt. A servlet futtatókörnyezet megvárja amíg az adott servletet használó minden még futó kliens kiszolgáló programszál véget ér (vagy lejár egy beállított időtartam, 30 sec) és meghívja a servlet public void destroy() metódusát. Ezen metódus meghívása után már nem fog egyik életciklus metódus sem meghívódni.

Ha esetleg újra szükség lenne a már megszüntetett servletre, akkor az a servlet új példányának létrehozását és inicializálását jelenti.