Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Enterprise Applications Architecture Prof. Dr. R. Todtenhoefer University of Applied Sciences Fulda Overview • N-Tier Architectures – – – – Configuration Presentation Tier Business Tier Resource Management Tier • PHP • Electronic Business Application Scenarios – Sun Microsystems view of N-Tier Architectures – Web Application Architectures – Component Technologies Objectives • Students acquire an understanding of: – – – – modern software architectures Knowledge of multi-tier application Hands-on experience in writing PHP and Java EE programs Basic knowledge of • Java Servlets • Enterprise Java Beans • Session Beans Application Scenarios • In web applications we need a flexible programming model and support for variety of software architectures Copyright Sun Microsystems N-Tier Architectures • Distributed Web-Applications are today implemented as Multi-Tier Applications • Each tier (= layer) has it‘s own functionality • Advantages – – – – – Separate components are less complex Distribution of implementation tasks Flexibility Scalability Security N-Tier Architectures • Separation of functionality into three conceptual layers • Presentation Tier – interacts with user, presents information and accepts requests – has usually a graphical user interface • Business Tier – implements application logic – often divided into • Web Tier • Application Server • Resource Management Tier – manages the data sources of the information system (DBMS, file system, ERP-system) Presentation Layer • User Interface • Nowadays is usually realized as thin client, implemented with a Web-Browser • Functionallity – accept user requests – Present results of server side computations • Common technologies – HTML (forms) – JSP – … Business Layer • This layer is where most of the appliction logic is implemented, e.g. – shopping cart (in an e-business application) – price computation, tax calculation • This layer is for scalibility and safety reasons often further divided into – Web-Server – Application Server • Common technologies – Servlets, JSP, ASP, .NET, Corba, EJB Resource Management Layer • Often referred to as Data Layer • Function is to manage the business data of an application – customer information – product data – orders • Common technologies – Data Base Systems like DB2, Oracle, MySql, … – Enterprise Resource Planning Systems like SAP 1-Tier Architecture • All conceptual layers are combined in a single tier • Very popular on mainframe computer architectures => Monolithic systems – – – – Clients are usually dumb terminals No other entry points from outside Focus on efficient usage of hardware resources Prototyp of a legacy system • Advantages – Optimizes performance, no communication overhead required • Disadvantages – Maintanance is difficult, qualified Cobol programmers necessary 2-Tier Architecture • Most popular approach: Client / Server System • Parts of the presentation layer (and application logic) is transferred on a PC or workstation • Clients correspond to presentation layer, servers correspond to application logic and data layer or • Clients include presentation and application layer, servers are used as database-servers – thin client / fat server versus fat client and thin server 3-Tier Architecture • Based on a clear separation of three layers – Client tier with presentation layer – Middle tier implements application logic – Resource management layer is composed of one (or many) database-servers • Scalable, application layer can be distributed on different computers in a cluster • Supports integration of multiple resource managers (ERP-Systems, DBMSs etc.) but • increased communication between layers N-Tier Architectures • Further generalizes 3-Tier architecture – Resource layer consists of different tier, focus on intergration of different systems – Presentation layer is realised in 2 separate tiers • Clients are using browsers for HTML • Web-Servers generate dynamic HTML-pages • Usually results in 4-Tier architecture (see J2EE part of lecture) • N => N+1 – adds flexibility and distribution options, but – introduces performance, complexity and management issues eBusiness Application Architecture • Sun‘s view of a N-Tier Architecture Copyright Sun Microsystems J2EE Components & Services Copyright Sun Microsystems Components • Application Clients / Browser • Web Components – PHP – Java Server Pages – Web Container / Servlet Engine (Apache, Tomcat) • Enterprise Java Beans (EJB) Components – – – – Session Beans Entity Beans Message Driven Beans Beans Container (Glassfish , JBoss) J2EE Services & APIs • Services – – – – Name Service Deployment Service Transaction Service Security Services • APIs – – – – Java Database Connector (JDBC) Java Transaction API and Service (JTA / JTS) Java Naming and Directory Interface (JNDI) Connector Architecture J2EE - Containers • Containers are run-time enviroments that support the functionality of the components Copyright Sun Microsystems J2EE Application Scenarios • J2EE provides a flexible programming model and supports a variety of software architectures: Copyright Sun Microsystems J2EE Application Scenarios • A typical 4 – Tier architecture of an J2EE-application with a thin client, web server, application server and database: Copyright Sun Microsystems J2EE Application Scenarios • Web - centric 3 – Tier architecture • Web-Container implements presentation- and application logic Copyright Sun Microsystems J2EE Application Scenarios • J2EE guidelines even allow classical C/S architectures • 2-Tier applications with stand-alone clients Copyright Sun Microsystems J2EE at work • Putting all pieces together: Copyright Sun Microsystems Client - Technologies • Where we are Copyright Sun Microsystems Web - Clients • Run on a browser (e.g. Firefox, …) • User Interface (content) is generated dynamicaly on the server-side • Generated documents are presented by the browser • Communication protocoll is HTTP (or HTTPS) • Documents are written in HTML • „runs everywhere“ Web – Client (Example 1) • Read Mailing List Items Web – Client (Example 2) • Calculate your Body-Mass-Index Web – Client (Code) • HTML - Code <html> <head> <title>RSS and PHP</title> </head> <link type="text/css" rel="stylesheet" href="./BMI.css"> <body> <h1>RSS Form (PHP Version)</h1> <form name="RSSForm" action="MyRSS.php" method="post"> RSS Feed: <input type="text" name="RSSURL" size=100 /><br /><br /> <input type="reset" value="Reset" /> <input type="submit" value="Read" /> </form> </body> </html> Web – Client (Example) • Functionality of the presentation tier – Presentation of results of server side computations – Accept user inputs • What we need: – HTML – elements for user input (HTML – forms) – Transport mechanism for data from client to server (HTTP GET and HTTP POST methods) • We can use URLs to submit data as parameters – Format: http://host:port/path/program?p1=v1&p2=v2 – http://sfoproject.informatik.fhfulda.de/CareeOnline/BMI/height=1.73&weight=73.0 Web - Tier • Where we are Copyright Sun Microsystems Web - Tier • The purpose of the Web-Tier – – – – The server in the Web-Tier processes HTTP requests Manages interaction between web client and application logic Generates HTML (or XML) content Business logic may be implemented entirely within the Web-Tier (3-Tier architecture) but is often implemented in another tier using EJB-technologies – For greater detail see • Designing Enterprise Applications with the J2EE ™ Platform, Second Edition, by Inderjeet Singh, Beth Stearns,Mark Johnson, and the Enterprise Team [1] Web - Tier • Web-enables business logic —The Web tier manages interaction between Web clients and application business logic. • Generates dynamic content —Web-tier components generate content dynamically,in entirely arbitrary data formats, including HTML • Presents data and collects input —Web-tier components translate HTTP PUTand GET actions into a form that the business logic understands and present results as Web content. • Maintains state —The Web tier has a simple, flexible mechanism for accumulating data for transactions and for interaction context over the lifetime of a user session. • May implement business logic —While many enterprise applications implement b usiness logic in enterprise beans, Webonly, low- to medium-volumeapplications with simple transactional behavior can implement business logic entirely within the Web tier. Source: [1], see page 75-76 Web - Container Web-Container Tools Web-Server Servlet-Engine Web - Container <?php //Read Channel-Info $channel=$rss->getChanne // Print Channel Title echo "<h2>" $items= $rss->getItems(); echo "<ul>"; DB foreach ($items as $item ) { echo "<li><a href='".u'>"; echo utf8_decode($item/li>"; echo utf8_decode($itemuthor']); echo "<br /><br />"; } echo "</ul>"; ?> Web-Server <html> <head> <title>RSS and PHP</title> </head> <link type="text/css" <body> <h1>RSS Form (PHP )</h1> <form name="RSSForm" RSS Feed: ><br /> <input type="reset" /> <input type="submit"/> </form> </body> </html> PHP Processor PHP – Simple example <?php require_once("XML/RSS.php"); $rssurl = $_POST['RSSURL']; $rss =new XML_RSS($rssurl); //Parse Data $res=$rss->parse(); if (true===PEAR::isError($res)) { die ($res->getMessage()); } //Read Channel-Info $channel=$rss->getChannelInfo(); // Print Channel Title echo "<h2>".utf8_decode($channel['title'])."</h2>"; PHP – Simple Example (cont.) // Create Link $url=utf8_decode($channel['link']); echo "<a href='$url'>$url</a><br /><br />"; // Print Channel Description echo "<b>".utf8_decode($channel[description])."</b>"; // Loop thru items $items= $rss->getItems(); echo "<ul>"; foreach ($items as $item ) { echo "<li><a href='".utf8_decode($item['link'])."'>"; echo utf8_decode($item['title'])."</a></li>"; echo utf8_decode($item['author']); echo "<br /><br />"; } echo "</ul>"; ?> Servlets • Are based on the Java Servlet Specification – CGI – Applets • Are implemented in Java, use Java Servlet API • Must be deployed in a Servlet container (= runtime enviroment) • Are object-oriented • Often used together with other web technologies (Java Server Pages, static HTML pages) • Typical functions: generate dynamic HTML-code, database queries, simple business processes Servlet Life Cycle The life cycle of a servlet is controlled by the container in which the servlet has been deployed. When a request is mapped to a servlet, the container performs the following steps. 1. If an instance of the servlet does not exist, the web container a. Loads the servlet class. b. Creates an instance of the servlet class. c. Initializes the servlet instance by calling the init method. 2. Invokes the service method, passing request and response objects. If the container needs to remove the servlet, it finalizes the servlet by calling the servlet’s destroy method. From: Sun J2EE –Tutorial, p.447 Servlet Libraries • See packages – javax.servlet.* and – javax.servlet.http.* • Most important: Servlet • Generic objects and interfaces – GenericServlet – ServletRequest – ServletResponse • Web objects and interfaces – HttpServlet – HttpServletRequest – HttpServletResponse Writing your own Servlets • Three ways to program a Servlet – Implement the Servlet interface – Extend the class GenericServlet – Extend the class HttpServlet • Im most cases you will extend HttpServlet • Each Servlet has to implement the Servlet interface (this can also be done implicitly by extending GenericServlet or HttpServlet) • Servlet Container relies on methods in this interface Servlets – Very simple example import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class HelloServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.println("HelloWorld"); out.close(); } } HttpServletRequest / Response • See online API documentation: http://java.sun.com/j2ee/1.4/docs/api/javax /servlet/http/HttpServletRequest.html Servlet – Simple Example import java.io.*; import javax.servlet.http.*; import javax.servlet.*; // Im Browser: http://localhost:8080/BMI/beispiel public class BMIServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String String String String name = req.getParameter("name"); vorname = req.getParameter("firstname"); groesse = req.getParameter("groesse"); gewicht = req.getParameter("gewicht"); Double heigth = new Double(groesse); Double weight = new Double(gewicht); double h = heigth.doubleValue(); double g = weight.doubleValue(); double bmi = g / (h * h); Double BMI = new Double(bmi); Servlet – Simple Example (cont.) res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>Ergebniss dieser BMI – Berechnung</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello " + vorname + " " + name + "</h1>"); out.println("<h1>Ihr BMI ist " + BMI + "</h1>"); out.println("</body>"); out.println("</head>"); out.close(); } } Enterprise Java Beans (EJB) • Where we are Copyright Sun Microsystems Enterprise Beans - Overview • In multi-tier applications an enterpise bean is a serverside component • Implements (and encapsulates) business logic of an application • provides system-level services such as transaction management, concurrency control, and security • EJB technology provides a distributed component model that enables developers to focus on solving business problems • J2EE platform helps to handle complex systemlevel issues. 4-Tier Architecture with EJBs EJB - Container • EJBs are created and managed at runtime by a container • Features of an EJB container – – – – – – – Lifecycle management of bean instances Ressource management Remote access to instances Transaction management Security Persistence Deployment Tools EJB - Components • Each EJB consists of several components EJB – Naming Conventions Home - Interface • Manages the lifecycle of EJB instances • Method types – Create – methods, find – methods, remove methods • Example import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface BMIHome extends EJBHome { BMI create() throws RemoteException, CreateException; } Remote - Interface • Definition of all business methods (only method signatures, not implementation) • Example import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface BMI extends EJBObject { public double calculateBMI(double weight, double height) throws RemoteException; } Enterprise Bean Class • Implements the methods in the Home – Interface – For each create-method in home interface we need a corresponding ejbCreate-method • Implements each (business-) method defined in the Remote – Interface • Implements several administrative callback-methods (EJB-Container needs these methods, ejbActivate()) • All these methods are never called by clients directly, but allways via the home- or remote-interface (delegation) EJB - Example import import import import java.rmi.RemoteException; javax.ejb.EJBException; javax.ejb.SessionBean; javax.ejb.SessionContext; public class BMIBean implements SessionBean { private static final long serialVersionUID = 1L; public double calculateBMI(double groesse, double gewicht) { return (gewicht / (groesse * groesse)); } public BMIBean() { } public public public public public } void ejbCreate() {} void ejbActivate() throws EJBException, RemoteException {} void ejbPassivate() throws EJBException, RemoteException {} void ejbRemove() throws EJBException, RemoteException {} void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {} Types of Enterprise Beans • Three different types of Enterprise Beans • Session Beans – Performs a task (e.g. computations) for a client, often used to model processes • Entity Beans – Represents a business object (e.g. customer) that exists in a persistent storage • Message Driven Beans – Processes messages asynchronously – Acts as a listener for the Java Message Service API Entity Beans • An entity bean is a persistent object that represents data maintained in a data store;its focus is data-centric. • An entity bean is identified by a primary key. • An entity bean can manage its own persistence or it can delegate this function to its container. • An entity bean can live as long as the data it represents. Persistence is handled in one of two ways: – Bean-managed persistence—The developer handles persistence as part of the entity bean’s source code – Container-managed persistence—The developer specifies the bean fields that need to be persistent and lets the EJB container manage persistence. From: [ 1 ], page 29 Message Driven Bean • A message-driven bean enables asynchronous clients to access the business logic inthe EJB tier. • Message-driven beans are activated only by asynchronous messages received from a JMS queue to which they listen. • A client does not directly access a message-driven bean; instead, a client asynchronously sends a message to a JMS queue or topic. • Because message-driven beans have no need to expose their methods to clients, they do not implement component or home interfaces. • They also do not maintain state on behalf of a client. From: [ 1 ], page 30 Session Beans • A session bean is created to provide some service on behalf of a client and usually exists only for the duration of a single client-server session. • A session bean performs operations such as calculations or accessing a database for the client. • Session beans can be stateless or can maintain conversational state across methods and transactions. • If they do maintain state, the EJB container manages this state if the object must be removed from memory. • However, the session bean object itself must manage its own persistent data. From: [ 1 ], page 29 Session Bean - Example Deployment Descriptor • A Deployment Descriptor (DD) is a XML-file • It describes the contents of deployment units (e.g. EJBs) and configure components to their environment. • Avoids hard-coding of some properties of enterprise beans (e.g. mapping of instance variables to database fields) • DD are used for – Persistance management – Transaction management – Security • DD are usually generated by tools (e.g. SUN Deploy Tool) Application clients • Coding the (web-) client – Locating the home interface of an EJB – Creating an enterprise bean instance – Invoking a business method • Compiling the client (automatically done by you favorite IDE) • Packaging the web client • Specify and ap the client‘s EJB reference • Deploy everthing • Run the application Application Client (Example) import … public class BMIEJBServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String String String String String name = req.getParameter("name"); vorname = req.getParameter("firstname"); groesse = req.getParameter("groesse"); gewicht = req.getParameter("gewicht"); fehler = "Fehlermeldung:"; Double dgroesse = new Double(groesse); Double dgewicht = new Double(gewicht); double diegroesse = dgroesse.doubleValue(); double dasgewicht = dgewicht.doubleValue(); double bmi = 0.0; // Ausgelagert in die Bean try { Context initial = new InitialContext(); Context myEnv = (Context)initial.lookup("java:comp/env"); Object objref = myEnv.lookup("ejb/BMIBean"); fehler = objref.toString(); BMIHome home = (BMIHome) PortableRemoteObject.narrow(objref, BMIHome.class); fehler = fehler + home.toString(); BMI myBMI = home.create(); fehler = fehler + myBMI.toString(); bmi = myBMI.calculateBMI(diegroesse, dasgewicht); } catch(NamingException e) {fehler = fehler + "NamingException";} catch(CreateException e) {fehler = fehler + "NamingException";} /* Ausgabe in HTML Seite */ Double bmiValue = new Double(bmi); res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>Ergebniss dieser BMI - Berechnung</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello " +fehler + "..."+ vorname + " " + name + " " + dgroesse +" " + dgewicht +"</h1>"); out.println("<h1>Ihr BMI ist " + bmiValue + "</h1>"); out.println("</body>"); out.println("</head>"); out.close(); } Summary • Objectoriented Analysis and Design of an application • Implementaion of the components (make or buy) by using J2EE technologies • Testing (components) • Packging • Deployment • „Einsatz“ • Maintenance