SlideShare a Scribd company logo
Portlets:
                         An Introduction
                              Part 1 of 2




Monday, March 16, 2009
Why Portlets?

                         • Java standard
                         • Highly pluggable
                         • Portlet modes
                         • Self-contained/decoupled

Monday, March 16, 2009
What is a Portlet?

                 • Self contained component on Page/Portal
                 • Introduced to offer user oriented components
                  • Email
                  • Weather
                  • Feeds
                  • and more!
Monday, March 16, 2009
Portlet Specifics
                   • Servlet runs in a ServletContainer(tomcat/
                         jboss/websphere...)
                   • Portlet runs in a PortletContainer(eXo,
                         Pluto, Liferay...)
                   • Portlet api build on top of the Servlet API
                   • doGet, doPost are mapped to HTTP GET/
                         POST


Monday, March 16, 2009
Portlet/Servlet
                                 differences

                         • Servlet -> Page, Portlet -> HTML Fragment
                         • Portlets are not URL addressable
                         • web.xml describes webapplication
                         • portlet.xml describes the portlets

Monday, March 16, 2009
Portlet Functionality


                         • Portlet Modes       Portlet States
                                           •

                          • Edit                   Normal
                                               •

                          • View                   Maximised
                                               •

                          • Help                   Minimised
                                               •




Monday, March 16, 2009
Traditional portlet
                                pattern
                   • User oriented
                   • Behave like mini windows within a portal/
                         web page
                   • Can be created/positioned/destroyed by
                         the front-end user
                   • Think iGoogle

Monday, March 16, 2009
Unify portlet pattern
   •       Developer oriented

   •       Used to deploy functionality

   •       No concept of windows

   •       Usually consist of the following modes

         •      edit (configuration)

         •      view (display)

         •      xml (view data source)




Monday, March 16, 2009
The standard portlet
                               api lacks

                   • Clear MVC framework
                   • Data binding
                   • Hence Spring portlets


Monday, March 16, 2009
MVC
                         (Model View Controller)

        • Architectural pattern          Controller
                                     •
        • Separate concerns
                                             Respond to user events
                                         •
        • Model represents
               domain                        Delegates to business tier
                                         •

        • View renders the                   Passes model to the view
                                         •
               view, with help of
               ViewHelpers

Monday, March 16, 2009
Spring
                                                      es
                                                   ic
                                                rv
                                              se
                                            eb
                                       W
     • Application Framework
     • Pojo Based with xml configuration Hibe
                                                    rna
     • Promotes decoupling of components                 te
     • Reduces the amount of code to write
                                                       ts
     •                                              ru
       Offers plenty of 3rd party integration
                                                  t
                                                S
Monday, March 16, 2009
Spring Portlet MVC
                   • Basically Spring MVC
                   • Data Binding
                   • Validation
                   • Lots of plumbing/boilerplate code
                   • JSF Portlets, Struts Portlets also offer MVC
                         ontop of Portlet API


Monday, March 16, 2009
Best Practices
                   • Portlets are a VIEW ONLY
                         TECHNOLOGY
                   • Only user interaction/rendering logic
                   • Decouple business logic and business
                         services
                   • Program to interfaces
                   • Use spring dependency injection
Monday, March 16, 2009
Architecting Portlets

                   • N-Tiered approach
                   • Presentation tier(Portlet)
                   • Business tier (Services/Domain model)
                   • Integration tier (hibernate/jdbc , SOAP/
                         rest)



Monday, March 16, 2009
Deployment
                   • Portlets are packaged in a Web application
                   • Deploying to Tomcat
                    • Copy to $vyre_home/webapps
                    • Create context in $tomcat/conf/catalina/
                         localhost
                   • web.xml needs webapprootkey
Monday, March 16, 2009

More Related Content

Similar to Portlets

No Really, It's All About You
No Really, It's All About YouNo Really, It's All About You
No Really, It's All About You
Chris Cornutt
 
Rails Internationalization
Rails InternationalizationRails Internationalization
Rails Internationalization
Mike Champion
 
Colin Clark Accessible U Is With J Query And Infusion[1]
Colin Clark Accessible U Is With J Query And Infusion[1]Colin Clark Accessible U Is With J Query And Infusion[1]
Colin Clark Accessible U Is With J Query And Infusion[1]
Ajax Experience 2009
 
Merb The Super Bike Of Frameworks
Merb The Super Bike Of FrameworksMerb The Super Bike Of Frameworks
Merb The Super Bike Of Frameworks
Rowan Hick
 
Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2
360|Conferences
 
Pylons - An Overview: Rapid MVC Web Development with WSGI
Pylons - An Overview: Rapid MVC Web Development with WSGIPylons - An Overview: Rapid MVC Web Development with WSGI
Pylons - An Overview: Rapid MVC Web Development with WSGI
Ches Martin
 
CouchDB to the Edge ApacheCon EU
CouchDB to the  Edge ApacheCon EUCouchDB to the  Edge ApacheCon EU
CouchDB to the Edge ApacheCon EU
Chris Anderson
 
Advanced MPI
Advanced MPIAdvanced MPI
Advanced MPI
Tayfun Sen
 
Web Content Management System Deployment Patterns
Web Content Management System Deployment PatternsWeb Content Management System Deployment Patterns
Web Content Management System Deployment Patterns
sggottlieb
 
MWLUG Chicago Keynote - Ed Brill
MWLUG Chicago Keynote - Ed BrillMWLUG Chicago Keynote - Ed Brill
MWLUG Chicago Keynote - Ed Brill
Ed Brill
 
plumbing for the next web
plumbing for the next webplumbing for the next web
plumbing for the next web
Ian Forrester
 
iPhone Development For .Net Dev
iPhone Development For .Net DeviPhone Development For .Net Dev
iPhone Development For .Net Dev
Alex Hung
 
Software Engineering In PHP
Software Engineering In PHPSoftware Engineering In PHP
Software Engineering In PHP
Ralph Schindler
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration Simplified
Rich Software
 
Web Standards and Accessibility
Web Standards and AccessibilityWeb Standards and Accessibility
Web Standards and Accessibility
Nick DeNardis
 
What is Ruby on Rails?
What is Ruby on Rails?What is Ruby on Rails?
What is Ruby on Rails?
Karmen Blake
 
Groovy and Grails in Google App Engine
Groovy and Grails in Google App EngineGroovy and Grails in Google App Engine
Groovy and Grails in Google App Engine
Guillaume Laforge
 
Presentation eXo Foss Bridge
Presentation eXo Foss BridgePresentation eXo Foss Bridge
Presentation eXo Foss Bridge
Jeremi Joslin
 
Scaling Django Dc09
Scaling Django Dc09Scaling Django Dc09
Scaling Django Dc09
Patrick Vergain
 
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Jazkarta, Inc.
 

Similar to Portlets (20)

No Really, It's All About You
No Really, It's All About YouNo Really, It's All About You
No Really, It's All About You
 
Rails Internationalization
Rails InternationalizationRails Internationalization
Rails Internationalization
 
Colin Clark Accessible U Is With J Query And Infusion[1]
Colin Clark Accessible U Is With J Query And Infusion[1]Colin Clark Accessible U Is With J Query And Infusion[1]
Colin Clark Accessible U Is With J Query And Infusion[1]
 
Merb The Super Bike Of Frameworks
Merb The Super Bike Of FrameworksMerb The Super Bike Of Frameworks
Merb The Super Bike Of Frameworks
 
Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2
 
Pylons - An Overview: Rapid MVC Web Development with WSGI
Pylons - An Overview: Rapid MVC Web Development with WSGIPylons - An Overview: Rapid MVC Web Development with WSGI
Pylons - An Overview: Rapid MVC Web Development with WSGI
 
CouchDB to the Edge ApacheCon EU
CouchDB to the  Edge ApacheCon EUCouchDB to the  Edge ApacheCon EU
CouchDB to the Edge ApacheCon EU
 
Advanced MPI
Advanced MPIAdvanced MPI
Advanced MPI
 
Web Content Management System Deployment Patterns
Web Content Management System Deployment PatternsWeb Content Management System Deployment Patterns
Web Content Management System Deployment Patterns
 
MWLUG Chicago Keynote - Ed Brill
MWLUG Chicago Keynote - Ed BrillMWLUG Chicago Keynote - Ed Brill
MWLUG Chicago Keynote - Ed Brill
 
plumbing for the next web
plumbing for the next webplumbing for the next web
plumbing for the next web
 
iPhone Development For .Net Dev
iPhone Development For .Net DeviPhone Development For .Net Dev
iPhone Development For .Net Dev
 
Software Engineering In PHP
Software Engineering In PHPSoftware Engineering In PHP
Software Engineering In PHP
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration Simplified
 
Web Standards and Accessibility
Web Standards and AccessibilityWeb Standards and Accessibility
Web Standards and Accessibility
 
What is Ruby on Rails?
What is Ruby on Rails?What is Ruby on Rails?
What is Ruby on Rails?
 
Groovy and Grails in Google App Engine
Groovy and Grails in Google App EngineGroovy and Grails in Google App Engine
Groovy and Grails in Google App Engine
 
Presentation eXo Foss Bridge
Presentation eXo Foss BridgePresentation eXo Foss Bridge
Presentation eXo Foss Bridge
 
Scaling Django Dc09
Scaling Django Dc09Scaling Django Dc09
Scaling Django Dc09
 
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
 

Recently uploaded

20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 

Recently uploaded (20)

20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 

Portlets

  • 1. Portlets: An Introduction Part 1 of 2 Monday, March 16, 2009
  • 2. Why Portlets? • Java standard • Highly pluggable • Portlet modes • Self-contained/decoupled Monday, March 16, 2009
  • 3. What is a Portlet? • Self contained component on Page/Portal • Introduced to offer user oriented components • Email • Weather • Feeds • and more! Monday, March 16, 2009
  • 4. Portlet Specifics • Servlet runs in a ServletContainer(tomcat/ jboss/websphere...) • Portlet runs in a PortletContainer(eXo, Pluto, Liferay...) • Portlet api build on top of the Servlet API • doGet, doPost are mapped to HTTP GET/ POST Monday, March 16, 2009
  • 5. Portlet/Servlet differences • Servlet -> Page, Portlet -> HTML Fragment • Portlets are not URL addressable • web.xml describes webapplication • portlet.xml describes the portlets Monday, March 16, 2009
  • 6. Portlet Functionality • Portlet Modes Portlet States • • Edit Normal • • View Maximised • • Help Minimised • Monday, March 16, 2009
  • 7. Traditional portlet pattern • User oriented • Behave like mini windows within a portal/ web page • Can be created/positioned/destroyed by the front-end user • Think iGoogle Monday, March 16, 2009
  • 8. Unify portlet pattern • Developer oriented • Used to deploy functionality • No concept of windows • Usually consist of the following modes • edit (configuration) • view (display) • xml (view data source) Monday, March 16, 2009
  • 9. The standard portlet api lacks • Clear MVC framework • Data binding • Hence Spring portlets Monday, March 16, 2009
  • 10. MVC (Model View Controller) • Architectural pattern Controller • • Separate concerns Respond to user events • • Model represents domain Delegates to business tier • • View renders the Passes model to the view • view, with help of ViewHelpers Monday, March 16, 2009
  • 11. Spring es ic rv se eb W • Application Framework • Pojo Based with xml configuration Hibe rna • Promotes decoupling of components te • Reduces the amount of code to write ts • ru Offers plenty of 3rd party integration t S Monday, March 16, 2009
  • 12. Spring Portlet MVC • Basically Spring MVC • Data Binding • Validation • Lots of plumbing/boilerplate code • JSF Portlets, Struts Portlets also offer MVC ontop of Portlet API Monday, March 16, 2009
  • 13. Best Practices • Portlets are a VIEW ONLY TECHNOLOGY • Only user interaction/rendering logic • Decouple business logic and business services • Program to interfaces • Use spring dependency injection Monday, March 16, 2009
  • 14. Architecting Portlets • N-Tiered approach • Presentation tier(Portlet) • Business tier (Services/Domain model) • Integration tier (hibernate/jdbc , SOAP/ rest) Monday, March 16, 2009
  • 15. Deployment • Portlets are packaged in a Web application • Deploying to Tomcat • Copy to $vyre_home/webapps • Create context in $tomcat/conf/catalina/ localhost • web.xml needs webapprootkey Monday, March 16, 2009

Editor's Notes