Sakai WebApp Structure

Slides:



Advertisements
Similar presentations
Introduction to the Spring Framework
Advertisements

Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Tool Naming Tips Aaron Zeckoski
Apache Struts Technology
A Blackboard Building Block™ Crash Course for Web Developers
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmers’ Café Sakai NWU Workshop, South Africa Recap of Sakai Services Antranig.
JNDI Java Naming Directory Interface JNDI is an API specified in Java that provides naming and directory functionality to applications written in Java.
My First Building Block Presented By Tracy Engwirda 28 September, 2005.
Model-View-Controller ("MVC") This is a architectural design pattern for interactive applications. This design pattern organizes an interactive application.
Layers & Tiers Umair Javed Lec - 41.
© 2005, Cornell University. Rapid Application Development using the Kuali Architecture (Struts, Spring and OJB) A Case Study Bryan Hutchinson
Apache Tomcat Server Typical html Request/Response cycle
Structure of a web application1 Dr Jim Briggs. MVC Structure of a web application2.
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Montreal CRIM Workshop Data Persistence and Intro to Hibernate.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
UNIT-V The MVC architecture and Struts Framework.
Lecture 2 - Struts ENTERPRISE JAVA. 2 Contents  Servlet Deployment  Servlet Filters  Model View Controllers  Struts  Dependency Injection.
Spring Roo CS476 Aleksey Bukin Peter Lew. What is Roo? Productivity tool Allows for easy creation of Enterprise Java applications Runs alongside existing.
JavaServer Faces: The Fundamentals Compiled from Sun TechDays workshops (JSF Basics, Web-Tier Codecamp: JavaServer Faces, Java Studio Creator; IBM RAD)
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmers’ Café Sakai NWU Workshop, South Africa Introduction to Sakai and Sakai.
LAYING OUT THE FOUNDATIONS. OUTLINE Analyze the project from a technical point of view Analyze and choose the architecture for your application Decide.
Students: Avner Barr, Eitan Vadergorn Supervisor: Rami Mankevich Lecturer in Charge: Chaim Gotsman.
Introduction to J2EE Architecture Portions by Kunal Mehta.
JBoss at Work JAW Motors Application Chapter 1-3 Jeff Schmitt October 9, 2006.
|Tecnologie Web L-A Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse e Tomcat
CHEF II / Sakai Architecture. CHEF II Changes uPortal replaces Jetspeed –jsr 168 portlet, servlet compliant Spring replaces Turbine component framework.
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmers’ Café Introduction to Sakai and Sakai Services Aaron Zeckoski
J2EE Overview Web Programming CSCI J2EE multi-tier architecture Servlet: Java class loaded into Web server JSP page: enhanced HTML page that is.
Introduction to Web Dimitar Nenchev Ivan Nakov
Ch 2 – Application Assembly and Deployment COSC 617 Jeff Schmitt September 14, 2006.
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Persistence and Hibernate Aaron Zeckoski
These materials are prepared only for the students enrolled in the course Distributed Software Development (DSD) at the Department of Computer.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
Model View Controller Architecture of Java Web Applications Dr. M V S Peri Sastry, Ph.D.[BITS-Pilani]
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Training Workshop Tata Interactive Systems Mumbai, India.
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai development and app/tool tips Aaron Zeckoski
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Montreal CRIM Workshop Sakai code exercises Aaron Zeckoski.
Sakai WebApp Structure
Persistence – Iteration 4 Vancouver Bootcamp Aaron Zeckoski
Modern Programming Language. Web Container & Web Applications Web applications are server side applications The most essential requirement.
Developing with the Framework Zach A. Thomas, Texas State University
Presented by Alexey Vedishchev Developing Web-applications with Grails framework American University of Nigeria, 2016 Intro To MVC Architecture.
Logical Architecture and UML Package Diagrams. The logical architecture is the large-scale organization of the software classes into packages, subsystems,
Structure of a web application
Web Routing Designing an Interface
JSP (Java Server Page) JSP is server side technology which is used to create dynamic web pages just like Servlet technology. This is mainly used for implementing.
Google Web Toolkit Tutorial
Play Framework: Introduction
Persistence – Iteration 4 Vancouver Bootcamp
Web Engineering.
Introduction to J2EE Architecture
Aaron Zeckoski Sakai Tool Naming Tips Aaron Zeckoski
Design and Maintenance of Web Applications in J2EE
Introduction to Struts
Introduction to Sakai and Sakai Services
Aaron Zeckoski Tomcat Debugging Aaron Zeckoski
ISE 390 Dynamic Web Development
Apache Tuscany Demo BigBank Example
Lecture 1: Multi-tier Architecture Overview
Evaluating Compuware OptimalJ as an MDA tool
Starting Design: Logical Architecture and UML Package Diagrams
JavaServer Faces: The Fundamentals
Component-based Applications
Component Technology Bina Ramamurthy 2/25/2019 B.Ramamurthy.
International Living Atlases Workshop Madrid 2018
CS4961 Software Design Laboratory Understand Aquila Backend
Directories and DDs 25-Apr-19.
Directories and DDs 21-Jul-19.
Directories and DDs 14-Sep-19.
Finding transactions through your application
Presentation transcript:

Sakai WebApp Structure Aaron Zeckoski azeckoski@gmail.com

What are we talking about? Let’s review some basics about web applications (to get on the same page) 3-tier architecture (or n-tier where n=3) Look at the basics of Sakai webapps Go over some Sakai app file structure conventions Talk about some package naming conventions

3-tier Application Architecture 3-tier architecture External Presentation User Other Apps Business Logic Database Data Access

Presentation Layer This is what the user sees and interacts with Sometimes called the GUI or client view Should not contain business logic or data access code 3-tier architecture Presentation Business Logic Data Access

Logic (Business) Layer The set of rules for processing business information Sometimes called middle tier or backend Should not contain presentation or data access code 3-tier architecture Presentation Business Logic Data Access

Data Access Layer The physical storage layer for data persistence Manages access to DB or file system Should not contain presentation or business logic code 3-tier architecture Presentation Business Logic Data Access

The 3-tier keys Each tier should be independent and should not expose dependencies related to the implementation Unconnected tiers should not communicate 3-tier architecture Presentation Business Logic Data Access

Application Structure and Dependencies Implementing the 3-tier structure in Sakai requires use of 3 deployment areas Shared - Tomcat shared library space More things than you would think will have to go here for your app to work Components - Sakai application context This is how Sakai maintains its collection of beans WebApp - Tomcat webapps (for your app/tool) Anything specific to your app gets deployed the same way it would if it were outside Sakai Note: Deployment areas do not map to tiers URL: http://issues.sakaiproject.org/confluence/x/BGo

More about Shared and Components Spring framework Hibernate Some commons libraries Almost all APIs Components Framework Services All other service level libraries

More about the Webapp Should contain your presentation framework (RSF, JSF, etc.) This should not be in shared! No direct access to the Sakai database Use a logic/dao layer for this Move business logic out of here Put it in the logic service layer

Application Structure Diagram Shared Model Logic-api (business logic) Public-api (service) Dao-api (data access) Components Logic-impl (business logic) Webapps Dao-impl (data access) Tool (presentation) URL: http://issues.sakaiproject.org/confluence/x/BGo

Sakai App File Structure 4 main directories (can be separate eclipse projects) Api (interfaces) Logic - business logic and dao apis Model - POJOs (value/data objects) Public - Service API (if you have one) Hbm - Hibernate HBM files (if using hibernate) Impl (implementations) Dao - data access implementation Logic - business logic implementation Tests - programmatic tests (unit/integration) Pack (component definitions) spring config files (Sakai components.xml) Tool (webapp) src/java - java classes used by your tool only src/webapp - xml, jsp, html, other meta files URL: http://issues.sakaiproject.org/confluence/x/BGo

File Structure Diagram Don’t try to memorize this, use the café app structure reference instead Don’t build this manually, use the Sakai AppBuilder plugin for Eclipse URL: http://issues.sakaiproject.org/confluence/x/BGo

Sakai App Package Structure org.sakaiproject - base package prefix You could also use your local prefix (e.g. uk.ac.cam.caret) org.sakaiproject.app-name Use something unique for app-name, long is good dao - data access hbm - hibernate mapping files logic - business logic model - value/data objects service - public api tool - webapp Add impl to represent implementations URL: http://issues.sakaiproject.org/confluence/x/BGo

Package Structure Diagram As before, don’t try to memorize this, use the café app structure reference instead Don’t build this manually, use the Sakai AppBuilder plugin for Eclipse URL: http://issues.sakaiproject.org/confluence/x/BGo

Reference Materials Refer to the Programmers Café Use the café app structure reference Try out the Sakai AppBuilder plugin Take advantage of the power of Eclipse to auto-complete and organize Use the Package Explorer Java view

Questions?