Kódelemzés ========== Belső architekturájuknak a felrajzolása --------------------------------------- Jetty architektúra ^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP/1.1 Connector" as HTTP11 rectangle "HTTP/2 Connector" as HTTP2 rectangle "Jetty Server" as Jetty rectangle "WebApp Store" as Store rectangle "WebApp Catalog" as Catalog Internet --> HTTP11 Internet --> HTTP2 HTTP11 --> Jetty HTTP2 --> Jetty Jetty --> Store Jetty --> Catalog @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: A külső világot reprezentálja, amelyen keresztül a klienskérések érkeznek. - **HTTP/1.1 Connector**: Egy kapcsolódási pont, amely a HTTP/1.1 protokollt kezeli. A felhasználói kéréseket fogadja be az internetről. - **HTTP/2 Connector**: Egy modern, hatékonyabb kapcsolódási pont, amely a HTTP/2 protokollt kezeli, támogatva a multiplexálást és gyorsabb adatátvitelt. - **Jetty Server**: A központi szerver komponens, amely feldolgozza a beérkező HTTP kéréseket, továbbítja azokat a belső komponenseknek, és előállítja a válaszokat. - **WebApp Store**: Az alkalmazásokhoz tartozó erőforrásokat, fájlokat tároló komponens, amelyből a Jetty szükség esetén betöltheti az alkalmazás elemeit. - **WebApp Catalog**: Az elérhető alkalmazások vagy modulok katalógusa, amely segíti a Jetty szervert az alkalmazások kezelésében. **Kapcsolatok:** - Az **Internet** kapcsolatot létesít a HTTP/1.1 és HTTP/2 Connectorokkal, amelyek a különböző protokollok szerint fogadják a kéréseket. - Mindkét Connector továbbítja a beérkező kéréseket a **Jetty Server**-hez. - A Jetty Server a kérések feldolgozása során a **WebApp Store** és **WebApp Catalog** komponenseket használja az alkalmazás elemeinek kiszolgálásához. GlassFish architektúra ^^^^^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP Connector\n(Grizzly)" as HTTP node "GlassFish Server" { rectangle "Web Container\n(Servets, JSP)" as Web rectangle "EJB Container\n(Enterprise Beans)" as EJB rectangle "Java EE Services\n(JTA, JMS, JPA, etc.)" as EE } database "Database" as DB folder "External Services" as External Internet --> HTTP HTTP --> Web Web --> EJB EJB --> EE EE --> DB EE --> External @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: A kliens oldali kérések forrása. - **HTTP Connector (Grizzly)**: A GlassFish által használt HTTP-kapcsolódási pont, amely fogadja az internet felől érkező kéréseket. - **GlassFish Server**: A fő szerver komponens, amely három fő alrendszerből áll: - **Web Container (Servlets, JSP)**: Kezeli a webkomponenseket, például servlet-eket és JSP-ket. - **EJB Container (Enterprise Beans)**: Kezeli az üzleti logikát tartalmazó Enterprise Java Beans komponenseket. - **Java EE Services (JTA, JMS, JPA, stb.)**: Szolgáltatásokat biztosít, mint tranzakciókezelés, üzenetküldés, perzisztencia. - **Database**: Az adatbázis, amelyhez a Java EE szolgáltatások kapcsolódnak. - **External Services**: Külső rendszerek vagy szolgáltatások, amelyek integrálhatók a GlassFish környezetbe. **Kapcsolatok:** - Az **Internet** kapcsolatot létesít a HTTP Connectorral. - A HTTP Connector továbbítja a kéréseket a **Web Containernek**. - A Web Container továbbítja a kéréseket az **EJB Containernek**. - Az EJB Container hívja a **Java EE Services** komponenseket, amelyek kapcsolatban állnak az **adatbázissal** és **külső szolgáltatásokkal**. Tomcat architektúrája ^^^^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP Connector\n(Coyote)" as Coyote node "Tomcat Server" { rectangle "Engine" as Engine rectangle "Host" as Host rectangle "Context" as Context rectangle "Servlet Container" as Servlets rectangle "JSP Engine\n(Jasper)" as Jasper } Internet --> Coyote Coyote --> Engine Engine --> Host Host --> Context Context --> Servlets Context --> Jasper @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: A külső klienskérések forrása. - **HTTP Connector (Coyote)**: Tomcat HTTP kapcsolatkezelő komponense, amely fogadja a bejövő kéréseket. - **Tomcat Server**: A fő szerver komponens, amely a következő alrendszerekből áll: - **Engine**: A legfelső szintű komponens, amely a kérések feldolgozását irányítja. - **Host**: Egy konkrét virtuális hoszt, amely több kontextust (alkalmazást) tartalmaz. - **Context**: Egy adott webalkalmazás egysége. - **Servlet Container**: Kezeli a servlet-eket, amelyek feldolgozzák a HTTP kéréseket. - **JSP Engine (Jasper)**: A JSP-ket feldolgozó komponens. **Kapcsolatok:** - Az **Internet** kapcsolatot létesít a Coyote Connectorral. - A Coyote Connector továbbítja a kéréseket az **Engine** komponensnek. - Az Engine irányítja a kéréseket a **Host**, majd a **Context** komponens felé. - A Context a kéréseket kiszolgálja a **Servlet Container** vagy **JSP Engine** segítségével. Geronimo architektúrája ^^^^^^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP Connector" as Connector node "Geronimo Server" { rectangle "Web Container\n(Servets, JSP)" as Web rectangle "EJB Container\n(Enterprise Beans)" as EJB rectangle "Java EE Services\n(JTA, JMS, JPA, etc.)" as EE } database "Database" as DB Internet --> Connector Connector --> Web Web --> EJB EJB --> EE EE --> DB @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: Klienskérések forrása. - **HTTP Connector**: A Geronimo szerver HTTP-kapcsolati pontja. - **Geronimo Server**: Szerverkomponens, mely az alábbiakat tartalmazza: - **Web Container (Servlets, JSP)**: Kezeli a webes komponenseket. - **EJB Container (Enterprise Beans)**: Kezeli az üzleti logikát tartalmazó Enterprise Beans komponenseket. - **Java EE Services (JTA, JMS, JPA, stb.)**: Szolgáltatásokat nyújt. - **Database**: Az adatbázis backend. **Kapcsolatok:** - Az **Internet** kapcsolatot létesít a HTTP Connectorral. - A Connector továbbítja a kéréseket a **Web Containernek**. - A Web Container kommunikál az **EJB Containerrel**, amely a Java EE szolgáltatásokat használja. - A Java EE szolgáltatások kapcsolatban állnak az **adatbázissal**. WildFly (JBoss EAP) architektúrája ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP Connector\n(Undertow)" as Connector node "WildFly Server" { rectangle "Management Console\n/ CLI" as Management rectangle "Web Subsystem\n(Servlets, JSP)" as WebSubsystem rectangle "EJB Container" as EJBContainer rectangle "Messaging Subsystem\n(JMS)" as Messaging } database "Database" as DB Internet --> Connector Connector --> WebSubsystem Connector --> EJBContainer Connector --> Messaging WebSubsystem --> DB EJBContainer --> DB Messaging --> DB Management --> WebSubsystem Management --> EJBContainer @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: Klienskérések forrása. - **HTTP Connector (Undertow)**: WildFly által használt HTTP kapcsolatkezelő. - **WildFly Server**: Fő szerver komponens, mely a következő alrendszereket tartalmazza: - **Management Console / CLI**: Adminisztrációs felület és parancssoros kliens. - **Web Subsystem (Servlets, JSP)**: Webalkalmazások kiszolgálása. - **EJB Container**: Enterprise Beans kezelés. - **Messaging Subsystem (JMS)**: Üzenetküldési szolgáltatások. - **Database**: Adatbázis backend. **Kapcsolatok:** - Az **Internet** a Connectoron keresztül kapcsolódik a Web Subsystemhez, EJB Containerhez és Messaginghez. - Mindhárom komponens kapcsolódik az adatbázishoz. - A Management Console/CLI kapcsolatban áll a Web Subsystemmel és az EJB Containerral az adminisztráció során. Oracle WebLogic architektúrája ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP Channel" as HTTPChannel node "WebLogic Server" { rectangle "Web Container\n(Servets, JSP)" as WebContainer rectangle "Application Runtime\n(EJB, JMS, JPA)" as AppRuntime rectangle "Security & Transactions" as SecTran } folder "Admin Server" as Admin database "Database" as DB Internet --> HTTPChannel HTTPChannel --> WebContainer WebContainer --> AppRuntime AppRuntime --> SecTran SecTran --> DB Admin --> WebContainer Admin --> AppRuntime @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: Klienskérések forrása. - **HTTP Channel**: WebLogic HTTP kapcsolatpontja. - **WebLogic Server**: Szerverkomponens, amely tartalmazza: - **Web Container (Servlets, JSP)**: Webkomponensek kezelése. - **Application Runtime (EJB, JMS, JPA)**: Alkalmazásfutási környezet. - **Security & Transactions**: Biztonsági és tranzakciókezelési komponens. - **Admin Server**: Adminisztrációs komponens. - **Database**: Adatbázis backend. **Kapcsolatok:** - Az **Internet** a HTTP Channelon keresztül érkezik. - A HTTP Channel továbbítja a kéréseket a Web Containernek. - A Web Container kommunikál az Application Runtime komponenssel. - Az Application Runtime kapcsolódik a Security & Transactions komponenshez. - Ez utóbbi kapcsolatban áll az adatbázissal. - Az Admin Server az adminisztráció során kapcsolódik a Web Containerhez és az Application Runtime-hoz. IBM WebSphere architektúrája ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. uml:: @startuml skinparam style strictuml skinparam shadowing true skinparam componentStyle rectangle skinparam defaultTextAlignment center cloud "Internet" as Internet rectangle "HTTP Endpoint" as HTTPSrv node "WebSphere Server" { rectangle "Web Container\n(Servlets, JSP, JSF)" as WebContainer rectangle "Business Logic\n(EJB, CDI)" as BusinessLogic rectangle "Integration Services\n(JMS, JPA, JTA)" as Integration } folder "Admin Console" as Admin database "Database" as DB Internet --> HTTPSrv HTTPSrv --> WebContainer WebContainer --> BusinessLogic BusinessLogic --> Integration Integration --> DB Admin --> WebContainer Admin --> BusinessLogic @enduml Az architektúra elemei és kapcsolódásuk: - **Internet**: Külső kérések forrása. - **HTTP Endpoint**: WebSphere HTTP kapcsolatkezelő komponense. - **WebSphere Server**: Szerverkomponens, amely a következő részekből áll: - **Web Container (Servlets, JSP, JSF)**: Webkomponensek kezelése. - **Business Logic (EJB, CDI)**: Üzleti logika kezelése. - **Integration Services (JMS, JPA, JTA)**: Integrációs szolgáltatások. - **Admin Console**: Adminisztrációs felület. - **Database**: Adatbázis backend. **Kapcsolatok:** - Az **Internet** a HTTP Endpointon keresztül érkezik. - A HTTP Endpoint továbbítja a kéréseket a Web Containernek. - A Web Container továbbítja azokat az üzleti logikát kezelő komponensnek. - Az üzleti logika kapcsolatban áll az integrációs szolgáltatásokkal. - Az integrációs szolgáltatások kapcsolódnak az adatbázishoz. - Az Admin Console kapcsolódik a Web Containerhez és az üzleti logikához. Konfigurációs lehetőségek (pl.: limitek, cache méretek) ------------------------------------------------------- Eclipse Jetty ^^^^^^^^^^^^^ Jetty konfigurációját XML fájlokon keresztül vagy programozott módon is meg lehet adni. A fő konfigurációs fájl a `jetty.xml`. **Főbb konfigurációs lehetőségek:** - **Thread pool**: maxThreads, minThreads, idleTimeout - **Request buffer size**, response buffer size - **Session cache és timeout** **Példa:** .. code-block:: xml 10 200 60000 GlassFish ^^^^^^^^^ GlassFish esetén a konfiguráció az admin konzolon keresztül vagy az `domain.xml` fájlban történik. **Főbb konfigurációk:** - **Thread pool limit**: `max-thread-pool-size`, `min-thread-pool-size` - **HTTP listener tuning** - **JVM memória beállítások** - **Cache méretek (pl. EJB, JMS, Web)** **Példa (domain.xml):** .. code-block:: xml Apache Tomcat ^^^^^^^^^^^^^ Tomcat konfigurációja főként a `server.xml` és `web.xml` fájlokban történik. **Főbb beállítások:** - **Connector szálkezelés**: `maxThreads`, `minSpareThreads` - **Session timeout és cache** - **JVM heap, PermGen, metaspace méretek** **Példa (server.xml):** .. code-block:: xml Apache Geronimo ^^^^^^^^^^^^^^^ Geronimo konfigurációja XML fájlokon keresztül (pl. `config.xml`) és admin konzolon keresztül végezhető. **Főbb beállítások:** - **Thread pool** és **queue** limitek - **Caching** beállítások (GBeans) - **Web konténer tuning** **Példa (részlet):** .. code-block:: xml 10 200 Red Hat JBoss / WildFly ^^^^^^^^^^^^^^^^^^^^^^^ WildFly (korábban JBoss AS) konfigurációja a `standalone.xml` vagy `domain.xml` fájlban történik. **Főbb konfigurációk:** - **Thread pool**: `max-threads`, `core-threads` - **Connection pool méretek** - **JVM heap és GC beállítások** - **Web és EJB cache** **Példa:** .. code-block:: xml Oracle WebLogic ^^^^^^^^^^^^^^^ WebLogic Server beállításai a WebLogic Console-on vagy `config.xml` fájlban történnek. **Főbb konfigurációk:** - **Execute thread count** - **Work Manager beállítások** - **Cache tuning (Web, EJB)** - **Connection pool size** IBM WebSphere ^^^^^^^^^^^^^ WebSphere esetén a konfiguráció elsősorban az adminisztrációs konzolon (Admin Console) keresztül történik, de lehetőség van szkriptelésre is (wsadmin). **Főbb konfigurációk:** - **Thread pool méretek (WebContainer, ORB, JMS, stb.)** - **Cache méretek (Web, dynacache)** - **Session és connection pool beállítások** Naplózás -------- Eclipse Jetty ^^^^^^^^^^^^^ Jetty a Java util logging (JUL) rendszert, vagy külső SLF4J/Logback könyvtárakat támogat. **Főbb jellemzők:** - `start.ini` vagy `jetty-logging.properties` fájlban konfigurálható - Támogatja a `Slf4jBridgeHandler` használatát is **Példa:** .. code-block:: properties org.eclipse.jetty.LEVEL=INFO org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog GlassFish ^^^^^^^^^ GlassFish a Java Logging (JUL) rendszert használja, amit a `logging.properties` fájl szabályoz. **Konfiguráció:** - `domain-dir/config/logging.properties` - Admin Console-ból is módosítható - Logfájlok: `server.log`, `error.log` **Példa:** .. code-block:: properties com.sun.enterprise.server.logging.GFFileHandler.level=FINE java.util.logging.ConsoleHandler.level=WARNING Apache Tomcat ^^^^^^^^^^^^^ Tomcat a JUL-t és a `org.apache.juli` kiterjesztést használja. **Konfiguráció:** - `logging.properties` a `conf/` mappában - Alternatíva: SLF4J + Logback **Példa:** .. code-block:: properties 1catalina.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs java.util.logging.ConsoleHandler.level = INFO Apache Geronimo ^^^^^^^^^^^^^^^ Geronimo az Apache Commons Logging-et (JCL) használja SLF4J vagy Log4j hátérrel. **Beállítás:** - `var/log/server.log` - Konfigurációs fájl: `log4j.xml` vagy `log4j.properties` Red Hat JBoss / WildFly ^^^^^^^^^^^^^^^^^^^^^^^ WildFly egy saját fejlesztésű loggolási alrendszert használ, amely SLF4J, Log4j és JUL átjárókat is tartalmaz. **Konfiguráció:** - `standalone.xml` vagy CLI (Command Line Interface) - Több handler, filter, formatter állítható be Oracle WebLogic ^^^^^^^^^^^^^^^ WebLogic a saját `WebLogic Logging Services` rendszert használja, de kompatibilis a Java Logging API-val. **Naplók:** - `AdminServer.log`, `ManagedServer.log`, `domain.log` **Beállítások:** - WebLogic Console → `Servers → Logging` - Támogatja: stdout, rotating file, SNMP forwarding IBM WebSphere ^^^^^^^^^^^^^ WebSphere a `High Performance Extensible Logging (HPEL)` rendszert használja. **Főbb naplók:** - `SystemOut.log`, `SystemErr.log` - HPEL vagy klasszikus mód (váltható) **Konfiguráció:** - Admin Console → `Troubleshooting → Logs and trace` - CLI (`wsadmin`) is használható Kódmetrikák (Egyáltalán melyik mekkora méretű szoftver?) -------------------------------------------------------- Alkalmazásszerver indítási folyamatát megvizsgálni (folyamatábra, gantt diagram, szekvencia diagram) - Ezekhez is jó, hogy ha tartoznak majd mérések. -----------------------------------------------------------------------------------------------------------------------------------------------------