Red Hat JBoss Portal 6.0

Reference Guide

For use with Red Hat JBoss Portal 6.0.

Edition 6.0.0

Red Hat Documentation Group

Legal Notice

Copyright © 2013 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack Logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.

Abstract

This Reference Guide is a high-level usage document. It deals with more advanced topics than the Installation and User Guides, adding new content or taking concepts discussed in the earlier documents further. It aims to provide supporting documentation for advanced users of the product. Its primary focus is on advanced use of the product and it assumes an intermediate or advanced knowledge of the technology and terms.
Preface
1. Document Conventions
1.1. Typographic Conventions
1.2. Pull-quote Conventions
1.3. Notes and Warnings
2. Getting Help and Giving Feedback
2.1. Do You Need Help?
2.2. Give us Feedback
1. Introduction
1.1. File Name Conventions
1.2. Related Links
2. JBoss Enterprise Application Platform 6 Integration
2.1. Primary Directories and Files
2.2. JBoss Portal Platform Subsystem
2.3. Standalone Mode
I. Portal Development
3. Skinning the Portal
3.1. Overview
3.2. Skin Components
3.3. Skin Selection
3.3.1. Skin Selection Through the User Interface
3.3.2. Setting the Default Skin within the Configuration Files
3.4. Skins in Page Markups
3.5. The Skin Service
3.5.1. Skin configuration
3.5.2. Resource Request Filter
3.6. The Default Skin
3.7. Creating New Skins
3.7.1. Creating a New Portal Skin
3.7.2. Creating a New Window Style
3.7.3. How to Create New Portlet Skins
3.7.4. Create New Portlet Specification CSS Classes
3.8. Tips and Tricks
3.8.1. Easier CSS Debugging
3.8.2. Some CSS Techniques
4. Portal Life-cycle
4.1. Overview
4.2. Application Server start and stop
4.2.1. Advanced WCI Registration
4.3. The Command Servlet
5. Default Portal Configuration
5.1. Overview
5.2. Configuration
5.3. Delete Portal Definitions using Component Plug-ins
5.4. Set the Info Bar Behavior
5.5. Disabling a Portal Container
6. Portal Default Permission Configuration
6.1. Overview
6.2. Overwrite Portal Default Permissions
7. Portal Navigation Configuration
7.1. Overview
7.2. Portal Navigation
7.3. Group Navigation
7.4. User Navigation
8. Data Import Strategy
8.1. Introduction
8.2. Data Import Strategy
8.2.1. Portal Configuration
8.2.2. Page Data
8.2.3. Navigation Data
9. Internationalization Configuration
9.1. Overview
9.2. Locales Configuration
9.3. ResourceBundleService
9.4. Navigation Resource Bundles
9.5. Portlets
9.5.1. Standard Portlet Resource Keys
9.5.2. Debugging Resource Bundle Usage
9.5.3. Translate the Language Selection Form
10. Localization Configuration
10.1. Pluggable Locale Policy
10.1.1. LocalePolicy API
10.1.2. Default LocalePolicy
10.1.3. Custom LocalePolicy
10.1.4. LocalePolicy Configuration
10.1.5. Keeping non-bridged resources in sync with current Locale
11. XML Resources Bundles
11.1. Overview
11.2. XML format
11.3. Portal Support
12. Right To Left (RTL) Framework
12.1. Groovy templates
12.2. Stylesheet
12.3. Images
12.4. Client Side JavaScript
13. JavaScript Inter Application Communication
13.1. Overview
13.2. Library
13.3. Syntax
13.4. Example of JavaScript events usage
14. Navigation Controller
14.1. Description
14.2. Controller in Action
14.2.1. Controller
14.2.2. Building Controller
14.2.3. Controller Configuration (controller.xml)
14.3. Integrate to JBoss Portal Platform WebUI framework
14.3.1. Routing
14.3.2. Rendering
II. Portlet development
15. Portlet Primer
15.1. JSR-168 and JSR-286 overview
15.1.1. Portal Pages
15.1.2. Rendering Modes
15.1.3. Window States
15.2. Tutorials
15.2.1. Deploying your first portlet
15.2.2. JavaServer Pages Portlet Example
16. Shared portlet.xml
16.1. Global Metadata Elements
17. JBoss Portlet Bridge
17.1. Portlet Bridge
17.2. JBoss Portlet Bridge
17.3. Portlet application
17.4. Extensions
17.5. Examples
17.6. Bridge Configuration
17.6.1. portlet.xml
17.7. Render Policy Parameters
17.8. Facelets Configuration
17.8.1. web.xml
17.9. JSP Only Configuration
17.9.1. web.xml
17.10. RichFaces Local and Remote Portlet Support
17.11. Sending and Receiving Events
17.11.1. Sending Events
17.11.2. Receiving Events
17.11.3. Public Render Parameters
17.11.4. Portlet Session
17.12. Resource serving
17.13. Serving JSF Resources in a Portlet
17.13.1. Expression Language Reference
17.13.2. Configuration
17.14. Developing Portlets with the Bridge
17.14.1. Implementing Portlet Bridge
17.14.2. Portlet tags
17.14.3. Excluding Attributes from the Bridge Request Scope
17.14.4. Prevent Resources Being Added to Portal Page Head
17.14.5. JSF facelet view
17.14.6. Error handling
17.14.7. Switching Portlet Modes
17.14.8. Navigating to a mode's last viewId
17.14.9. Using Wildcards to Identify the Rule Target
17.14.10. Clearing The View History When Changing Portlet Modes
17.14.11. Communication Between Your Portlets
17.14.12. Linking to a Facelets page within the same portlet
17.14.13. Redirecting to an external page or resource
17.14.14. Using Provided EL Variables
III. Authentication and Authorization
18. Introduction to Authentication and Authorization
18.1. Authentication Overview
18.2. Login Modules
18.2.1. Existing Login Modules
18.2.2. Creating Your Own Login Module
18.2.3. Authenticator and RolesExtractor
18.3. Different Authentication Workflows
18.3.1. RememberMe Authentication
18.3.2. Authorization Overview
19. Password Encryption
19.1. Hashing and Salting of Passwords in PicketLink IDM
19.1.1. Choosing CredentialEncoder Implementation
19.2. Password Encryption of Rememberme Passwords
20. Predefined User Configuration
20.1. Plug-in for Adding Users, Groups and Membership Types
20.2. Membership Types
20.3. Groups
20.4. Users
20.5. Plug-in for Monitoring User Creation
21. Authentication Token Configuration
21.1. The Token Service
21.2. Implementing the Token Service API
21.3. Configuring Token Services
22. PicketLink IDM Integration
22.1. Configuration Files
22.1.1. PicketlinkIDMServiceImpl
22.1.2. PicketlinkIDMOrganizationServiceImpl
23. Organization API
24. Accessing User Profile
25. Create Users and Groups without Organization API
25.1. Enable Initializer
25.2. Operations
25.3. Using configuration directives
25.4. Using JMX Console
25.5. Using REST Interface
26. Single Sign-On
26.1. Overview and Configuration Assumptions
26.2. Central Authentication Service (CAS)
26.2.1. Authentication Process
26.2.2. Logout Process
26.2.3. CAS Configuration Overview
26.2.4. Modifying the CAS server
26.2.5. Install Apache Tomcat Server
26.2.6. Modifying the Portal
26.2.7. Build and Deploy the CAS
26.3. Java Open Single Sign-On (JOSSO)
26.3.1. Authentication Process
26.3.2. JOSSO 1.8
26.3.3. JOSSO 2.2
26.4. OpenAM
26.4.1. Login and Logout Workflow
26.4.2. Obtaining OpenAM
26.4.3. OpenAM Server Setup
26.4.4. JBoss Portal Platform Setup as OpenAM Client
26.4.5. Cross-domain Authentication with OpenAM
26.5. Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO)
26.5.1. SPNEGO Server Configuration
26.5.2. Client Configuration
26.5.3. JBoss Portal Platform Configuration
26.5.4. SPNEGO Configuration Testing
26.5.5. Additional Configuration
26.6. Single Sign-On in a Cluster
26.6.1. Default Configuration
26.6.2. Clustered Single Sign-On in a Shared DNS Domain
26.6.3. Reauthentication
27. LDAP Integration
27.1. LDAP in Read-only Mode
27.2. LDAP as Default Store
27.3. Examples
28. Security Assertion Markup Language (SAML2)
28.1. What is SAML2
28.2. What is an Assertion
28.3. What is an Identity Provider (IDP)
28.4. What is a Service Provider (SP)
28.5. SAML2 Authentication Overview
28.6. The platform as SAML2 SP and SAML2 IDP
28.7. Disable SAML2 Single logout
28.8. Implementing Keystores
28.9. Setup with Picketlink IDP using REST callback
28.10. Integration with Salesforce and Google Apps
28.10.1. Scenario One
28.10.2. Scenario Two
28.10.3. Scenario Three
28.10.4. Tips and Tricks
IV. Web Services for Remote Portlets (WSRP)
29. Web Services for Remote Portlets (WSRP)
29.1. Introduction
29.2. Level of support in JBoss Portal Platform
29.3. Deploying JBoss Portal Platform's WSRP services
29.3.1. Considerations to use WSRP when running JBoss Portal Platform on a non-default port or hostname
29.4. Securing WSRP
29.4.1. WSRP over SSL with HTTPS endpoints
29.4.2. WSRP and WS-Security
29.4.3. Credentials
29.5. Making a portlet remotable
29.6. Consuming WSRP portlets from a remote Consumer
29.7. Consuming remote WSRP portlets in JBoss Portal Platform
29.7.1. Overview
29.7.2. Configuring a remote producer using the configuration portlet
29.7.3. Configuring access to remote producers via XML
29.7.4. Adding remote portlets to categories
29.7.5. Adding remote portlets to pages
29.8. Consumers maintenance
29.8.1. Modifying a currently held registration
29.8.2. Consumer operations
29.8.3. Importing and exporting portlets
29.8.4. Erasing local registration data
29.9. Configuring JBoss Portal Platform's WSRP Producer
29.9.1. Overview
29.9.2. Default configuration
29.9.3. Registration configuration
29.9.4. WSRP validation mode
29.10. Working with WSRP Extensions
29.10.1. Overview
29.10.2. Example implementation
V. Advanced Development Foundations
30. The eXo Kernel
30.1. eXo Kernel
30.1.1. Kernel configuration namespace
30.2. Configuration Retrieval
30.3. Advanced concepts for the PortalContainers
30.3.1. Add new configuration files from a WAR file
30.3.2. Creating your PortalContainers from a WAR file
30.3.3. Defining a PortalContainer with its dependencies and its settings
30.3.4. PortalContainer settings
30.3.5. Adding dynamically settings and/or dependencies to a PortalContainer
30.3.6. Disable dynamically a portal container
30.4. Runtime configuration profiles
30.4.1. Profiles activation
30.4.2. Profiles configuration
30.5. Component request life cycle
30.5.1. Component request life cycle contract
30.5.2. Request life cycle
30.6. Configuring Services
30.6.1. Configuration syntax
30.7. Specific Services
30.7.1. ListenerService
30.7.2. Understanding the ListenerService
30.7.3. Job Schedule
30.7.4. The data source provider
30.8. Configuring a portal container
30.9. System property configuration
30.9.1. Properties <init-param>
30.9.2. Properties URL <init-param>
30.9.3. System Property configuration of the properties URL
30.9.4. Variable Syntaxes
30.10. The Extension Mechanism and Portal Extensions
30.10.1. Running Multiple Portals
30.11. Manageability
30.11.1. Introduction
30.11.2. Managed framework API
30.11.3. JMX Management View
30.11.4. Example
VI. The Java Content Repository (JCR)
31. Introduction
31.1. Concepts
32. Implementation
32.1. Workspace Data Model
33. JCR configuration
33.1. Portal configuration
33.1.1. JCR Configuration
33.1.2. Repository service configuration (JCR repositories configuration)
33.1.3. Workspace configuration:
33.1.4. Workspace data container configuration:
33.1.5. Value Storage plug-in configuration (for data container):
33.1.6. Initializer configuration (optional):
33.1.7. Cache configuration:
33.1.8. Query Handler configuration:
33.1.9. Lock Manager configuration:
34. Multi-language Support
34.1. Oracle
34.2. DB2
34.3. MySQL
34.4. PostgreSQL
35. Configuring Search
35.1. Global Search Index
35.2. IndexingConfiguration
35.3. Advanced features
36. Configuring the JDBC Data Container
36.1. Introduction
36.2. Multi-database Configuration
36.3. Single-database Configuration
36.3.1. Configuration without DataSource
36.3.2. Dynamic Workspace Creation
36.4. Simple and Complex queries
36.5. Force Query Hints
36.6. Notes for Microsoft Windows users
37. External Value Storages
37.1. Introduction
37.2. Tree File Value Storage
37.3. Disabling value storage
38. Workspace Data Container
39. Configuring Cluster
39.1. Launching Cluster
39.1.1. Configuring JCR to use external configuration
39.2. Requirements
39.2.1. Environment requirements
39.2.2. Configuration requirements
40. Configuring JBoss Cache
40.1. Indexer, lock manager and data container configuration
40.2. JGroups configuration
40.3. Sharing JBoss Cache instances
40.4. Shipped JBoss Cache configuration templates
40.4.1. Data container template
40.4.2. Lock manager template
40.4.3. Query handler (indexer) template
41. LockManager
41.1. CacheableLockManagerImpl
41.1.1. Simple JBoss Cache Configuration
41.1.2. Template JBoss Cache Configuration
41.1.3. Lock Migration
42. Configuring QueryHandler
42.1. Indexing in clustered environment
42.2. Configuration
42.2.1. Query-handler configuration overview
42.2.2. Cluster-ready indexing
42.2.3. Local Index Recovery Filters
42.2.4. JBoss-Cache template configuration
42.3. Asynchronous Re-indexing
42.3.1. On startup indexing
42.3.2. Hot Asynchronous Workspace Re-indexing using JMX
42.3.3. Notices
42.4. Advanced tuning
42.4.1. Lucene tuning
43. JBossTransactionsService
43.1. Introduction
43.2. Configuration
44. JCR Query Use-cases
44.1. Introduction
44.2. Query Lifecycle
44.2.1. Query Creation and Execution
44.2.2. Query Result Processing
44.2.3. Scoring
44.3. Tips and tricks
44.3.1. XPath queries containing node names starting with a number
45. Searching Repository Content
45.1. Introduction
45.2. Bi-directional RangeIterator
45.3. Fuzzy Searches
45.4. SynonymSearch
45.5. Highlighting
45.5.1. DefaultXMLExcerpt
45.5.2. DefaultHTMLExcerpt
45.5.3. Usage
45.6. SpellChecker
45.6.1. Usage
45.7. Similarity
46. Full Text Search And Affecting Settings
46.1. Lucene Analyzers
46.2. Property Indexing
46.3. Different Analyzers
47. WebDAV
47.1. Introduction
47.2. WebDAV Configuration
47.3. Corresponding WebDAV and JCR actions
47.4. WebDAV Considerations
48. FTP
48.1. Introduction
48.2. Configuration Parameters
49. Use External Backup Tool
49.1. Repository Suspending
49.2. Backup
49.3. Repository Resuming
50. eXo JCR statistics
50.1. Statistics on the Database Access Layer
50.2. Statistics on the JCR API accesses
50.3. Statistics Manager
51. Checking repository integrity and consistency
51.1. JMX-based consistency tool
52. JCR Performance Tuning Guide
52.1. Introduction
52.2. JCR Performance and Scalability
52.2.1. Cluster configuration
52.2.2. JCR Clustered Performance
52.3. Performance Tuning Guide
52.3.1. JBoss Enterprise Application Platform 6 Tuning
52.3.2. JCR Cache Tuning
52.3.3. Clustering
53. eXo JCR with JBoss Portal Platform
53.1. How to use a Managed DataSource under JBoss Enterprise Application Platform 6
53.1.1. Configurations Steps
A. Revision History