160 likes | 350 Views
JBoss Architektur. Einführung Komplexpraktikum Softwaretechnik SS 2003 Christoph Pohl, Steffen G öbel Lehrstuhl Rechnernetze. Überblick. J2EE / EJB Java Management eXtensions (JMX) Interceptors, Dynamic Proxies & Reflection Ansatzpunkte zur Integration. vorerst ausklammern. Modifikation.
E N D
JBoss Architektur Einführung Komplexpraktikum Softwaretechnik SS 2003 Christoph Pohl, Steffen Göbel Lehrstuhl Rechnernetze
Überblick • J2EE / EJB • Java Management eXtensions (JMX) • Interceptors, Dynamic Proxies & Reflection • Ansatzpunkte zur Integration Christoph Pohl - RN
vorerst ausklammern Modifikation J2EE Dienste im JBoss Transactions (JTS/JTA) Security (JAAS) Naming (JNDI) Remote Management JMX Management Bus Implementation EJB Container EJB Container Databases Data Sources Messaging (JMS) Web Container (JSP / Servlet) EJB Container Christoph Pohl - RN
MBean Server JBoss JMX Microkernel Proprietary Management Application JMX Management Application Web Browser Distributed Services Additional Management APIs C C JVM C PA C SNMP Agent Level CIM/WBEM Agent Service MBeans Instrumentation Level Resource MBeans Christoph Pohl - RN
Interceptoren Proxies undInterceptoren Netzwerk Proxy Schicht Web Container Server(JBoss+) JSP Servlet Interceptoren Komponenten Container DB Zugriff Java-Clients Orthogonale Middleware-Dienste Orthogonale Middleware-Dienste Christoph Pohl - RN
Interceptoren Client Proxy Interceptor Interceptor Server … • Konzept zur Informationsanreicherung von Aufrufen • Parameter & Ergebnisse; Client- & Server-Seite • Integration beliebiger Middleware-Dienste call() invoke(call) invoke(call) invoke(call) Netzwerk Christoph Pohl - RN
Component Deployment & client-side Invocation EJB Archive Proxy Factory EJB Module EJB Deployer Naming (JNDI) Call URL Deployment Scanner java.lang.reflect.Proxy EJBHome InvocationHandler EJBRemote JBoss Server Interceptor Chain Network Christoph Pohl - RN
JBoss Dynamic Proxies Client java.lang.reflect.Proxy javax.ejb.EJBObject example.Customer <<Dynamic Proxy>> $Proxy1 Server Container java.lang.reflect.InvocationHandler org.jboss.proxy.ClientContainer org.jboss.invocation.jrmp.interfaces. JRMPInvokerProxy org.jboss.invocation.jrmp.server. JRMPInvoker org.jboss.proxy. Interceptor Christoph Pohl - RN
Invocation & Dispatching Client Server Proxy Invoker EJBContainer Local Call EJBContainer EJBContainer Instance Pool jmx Interceptor Chain . . . . . . HTTP IIOP ... MBean Server jmx jmx RMI/JRMP Middleware Service Proxy Invoker Middleware Service Middleware Service Christoph Pohl - RN
Komponenten – Verwaltung Komponenten – Verwaltung Komponenten – Verwaltung Komponenten – Verwaltung Komponenten – Verwaltung Implementierungs – Verwaltung Implementierungs – Verwaltung Implementierungs – Verwaltung Implementierungs – Verwaltung Implementierungs – Verwaltung QoS Repository QoS Repository QoS Repository QoS Repository QoS Repository Vertragsmanager Vertragsmanager Vertragsmanager Vertragsmanager Vertragsmanager Kommunikations Proxy Kommunikations Proxy Kommunikations Proxy Kommunikations Proxy Kommunikations Proxy Instanz der Komp. – Impl. 1 Instanz der Komp. – Impl. 1 Instanz der Komp. – Impl. 1 Instanz der Komp. – Impl. 1 Instanz der Komp. – Impl. 1 Instanz der Komp. – Impl. 2 Instanz der Komp. – Impl. 2 Instanz der Komp. – Impl. 2 Instanz der Komp. – Impl. 2 Instanz der Komp. – Impl. 2 Ressourcen- Proxy Ressourcen- Proxy Ressourcen- Proxy Ressourcen- Proxy Ressourcen- Proxy Ressourcen – Verwaltung Ressourcen – Verwaltung Ressourcen – Verwaltung Ressourcen – Verwaltung Ressourcen – Verwaltung COMQUAD-Konzept: Grobe Architektur Verwaltung der Komponenten - Implementierungen Verwaltung der QoS - Eigenschaften • Verträge zwischen • Komponenten • Reservierung der • Ressourcen Überwachung des Zugriffs Christoph Pohl - RN
Überlegungen zur Integration • Interceptoren als Hauptansatzpunkt für Vertragsmanager • ProxyFactory muss nun auch QoS-Profile unterstützen • Überwachung von Kommunikation und Ressourcenverbrauch • Generische (statische) Dienste werden vom JMX Server als MBeans instanziiert • QoS-Repository, Monitoring... • 1 Containerinstanz pro Deployment einer Komponentenimplementierung Christoph Pohl - RN
Architecture Description Languages zahlreich Instanzebene meist kaum adressiert Anlehnung an CORBA Components Model CAD Architekturbeschreibung von Komonentennetzen * Component Specification 1 supported 1..* * realization Component Interface Component Implementation 1 * installation Installed Component 1 * instance Component Object [Cheeseman/Daniels] Christoph Pohl - RN
Komponenten – Implementierungen A1 Komponenten – Impl. A2 .spec Komponenten – Impl. B1 Profil B1.1 Profil B1.2 .impl Profil A1.1 Profil A1.2 Profil A1.3 Profil A2.1 Profil A2.2 provides provides provides provides provides provides provides provides provides provides Komponenten – Spezifikation B Komponenten – Spezifikation A uses uses uses uses uses uses uses uses uses uses Funktionaler Bestandteil resources resources resources resources resources resources resources resources resources resources .comquad Komponenten – Implementierungen B2 .cqml Profil B2.1 Profil B2.2 Profil B2.3 Funktionaler Bestandteil Funktionaler Bestandteil Funktionaler Bestandteil Deskriptoren Assembly Christoph Pohl - RN
Minimal-JBoss Sources Binaries run.sh / run.bat Eine von mehreren Konfigurationen Ant Build-Skript http://ant.apache.org/ Christoph Pohl - RN
Entwicklungsumgebung • Eclipse (http://www.eclipse.org) • Apache Ant (http://ant.apache.org) • build.xml • XDoclet (http://xdoclet.sf.net) • Spezielle Javadoc-Kommentare • Generierung von MBean-Interfaces und EJB-Deployment-Descriptoren und Remote-/Home-Interfaces Christoph Pohl - RN