290 likes | 443 Views
uPortal 3.0.0 Where did everything go? Eric Dalquist University of Wisconsin - Madison. Roadmap Review. How did we get here? uPortal 2 is a solid base Identified areas for improvement Focused on major changes Where are we going? All those not-quite major changes
E N D
uPortal 3.0.0 Where did everything go? Eric Dalquist University of Wisconsin - Madison
Roadmap Review • How did we get here? • uPortal 2 is a solid base • Identified areas for improvement • Focused on major changes • Where are we going? • All those not-quite major changes • Planning semi-annual releases
Core Changes • Theme & Skin • Project Structure • Build System • Spring Configuration • Portlet Container • Caching Framework • Import/Export Tools • CAS Authentication
New Theme & Skin • Clean XHTML & CSS markup • Easier to Skin • More CSS Hooks • Generic Document Structure • Modifiable Theme XSL • Multiple Well-Scoped Files • Internally Well Documented • Red/Yellow/Green Ratings
New Theme & Skin • Simple Directory Structure • Separate Structure & Theme • Meaningful Directory Names • Flexible Skin Directories • Allows for shared files • Skins are assumed to be theme specific
New Theme & Skin Theme File Summary universality.xsl - Core file, has instructions and configuration page.xsl - Contains base portal page layout templates navigation.xsl - Contains portal navigation templates columns.xsl - Per-column layout and formatting templates content.xsl - Portlet/Channel container templates preferences.xsl - User Preferences UI templates components.xsl - Common utility templates messages.xml - I18n capable messages file, contains all text
New Project Structure • Maven Standard Directory Layout • src/main/java • Application/Library sources • src/main/resources • Application/Library resources • src/main/webapp • Web application sources • src/test/java • Test sources • src/test/resources • Test resources
New Project Structure • Multiple sub-projects (uportal-*) • impl – Source code & resources • war – Web content & configuration • portlets – Bundled portlet overlays • ear – The full package • ear-deployer – Tomcat deploy tool • ant-tasks – Ant deployer tasks
Project Modules • uportal-impl • src/main/java • All uPortal source code • src/main/resources • All non-UI classpath resources (config) • uportal-war • src/main/resources • UI classpath resources • src/main/webapp • WebApp config, images, css, js
Project Modules • uportal-portlets-overlay • Uses Maven's WAR Overlay feature • How portlets are bundled with uPortal • Includes Pluto assembling step • Allows uPortal specific configurations • uportal-ear • depends on uportal-war and portlets • generates standard EAR file
New Build System • Maven 2 at the core • Dependency Management • Compiling, Testing, Packaging • WAR Overlay Packaging • Ant Utilities • Deployment • uPortal Tools • Database Setup • User Management • Import/Export Command Line
New Build System • Targets moved into Maven • all, compile, compiletests, dist, javadoc, runtests • Helpful error messages are included • Targets renamed • deploy => deploy-war • pubchan => crn-import • Retains 2.6 Functionality
New Build System • Integration via maven-ant-tasks • Low Maintenance • Project build information loaded from pom • Project deploy information specified in build.properties • No need to edit build.xml • Intelligent Build Performance • determines if module builds are needed • Easily Extendable • Future project modules • Additional portlets
Spring Configuration • Single ApplicationContext Instance • Multiple Context Files • /uportal-impl • /src/main/resources/properties/contexts • PortalApplicationContextLocator • Provides seamless access • Ensures the context is a singleton • Works from Web and CLI
Spring Configuration • What has moved? • Core and Portlet related factories • Service configuration • How does it work? • Spring Context is the master • Most factories are context backed • Care to not create cycles! • What's next? • Continue the factory hunt
Portlet Container • Upgraded to Pluto 1.1 • Complete re-write of SPI • Very similar to Pluto 2.0 SPI • Significant reduction of portal code • Pluto provides many services • Complete Re-Integration • Added portletisms into uPortal • Portlets are the new public API • Resolved IChannel mismatches
JPA & Hibernate • All New and Refactored DAOs • Using J2EE5 Annotations • Hibernate as the EntityManager • Benefits • SQL Abstraction • Minimal Code • DDL Generation • Caching Layer
Caching Framework • Uses Spring-Modules for abstraction • Supports multiple caching frameworks • EhCache is used by default • Clustering Support! • Invalidation based replication • Single cache manager shared by: • Portal caches • Hibernate caches • Not all portal caches are converted
JMX • Monitoring & Management • JDBC & LDAP Connections • View pool health and performance • Cache Statistics & Management • Gather performance statistics • Help with portal tuning direction • Hibernate Statistics • Watch database performance
Import / Export • All (almost) data in entity files • Minimal data.xml • 430 lines, down from 5800 in 2.6 • Supports Import of 2.6 Entities • Much easier to modify, maintain and migrate • See Andrew Wills' presentations for more information
Bundling Portlets • Portlets are bundled as Maven dependencies • Uses the WAR-Overlay feature • Allows for uPortal specific files to be injected • Includes use of the Pluto assembly Maven plugin • Easy to add more portlets • Add an overlay project • Add dependency to uportal-ear
Bundling Portlets - Overlay Example • Pluto-Testsuite • Configure expected test results • Configure logging correctly for uP3 • Maven will overlay these files on the specified WAR artifact
Bundling CAS • A CAS 3.1 Server is bundled • Authenticates via the Portal DB • Same uPortal Security system • Doesn't preclude existing configurations • Promote CAS for SSO with uPortal • CAS Proxy support for Portlets • Proxy ticket via USER_INFO Map • "casProxyTicket” attribute
User Groups • PAGS is enabled out of the box • pags.root is a member of Everyone • New “All Users (PAGS)” Group • Tester always returns true • Much more performant than adding users to local groups
Reducing Custom Code • Avoid re-inventing those wheels • Use well vetted FOSS libraries • Free & Open Source Software • Focus on the interesting problems • Simplifies long-term maintenance • Reduces needs for uPortal specific documentation • Switch to Spring-LDAP is an example
Development • Eclipse 3.3 • M2Eclipse • http://m2eclipse.codehaus.org/ • SpringIDE • http://springide.org/blog/ • Subclipse • http://subclipse.tigris.org/ • svnmerge.py • http://www.ja-sig.org/wiki/x/AwbP
3.1 and Beyond • Many interesting opportunities • Fluid Reorderer Integration • Stand-Alone Groups and Permissions • Spring-Security (aka Acegi) • Refactoring DAOs to use JPA • Implement portlet based admin tools • Refactored rendering pipeline
Many thanks to everyone who contributed to uPortal 3.0! Thank You!