|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TOP THREE LINKS YOU MUST CLICK ON Feature Customizing User Profiles with Portal
Customizing User Profiles with Portal
By: Ryan Upton
Mar. 27, 2003 12:00 AM
This article focuses on the User Management framework of WebLogic Portal. Specifically I will discuss a small portion of Portal's User Profile Management features by detailing how to customize Portal's User Manager functions and extend the User Management framework to build a robust Unified User Profile.
Personalization
Properties Each property set created in the User Profile, Request, Session, or Events tabs can be accessed by your portal applications. Although the creation of property sets and their properties is done in a consistent fashion, this last one, User Profile, is the one we'll focus on here. By default, properties are stored in the Portal schema, the default-persistent framework that Portal uses to store all WebLogic Portal-persistent attributes for personalization and other services (see Figure 2). Although a complete discussion of the Personalization framework is beyond the scope of this article, I'll discuss just enough of it to provide a context for managing user profiles.
The Moving Pieces The User Manager provides methods for creating users, creating groups, assigning users to groups, and deleting users. These methods directly interact with WebLogic Server's security realm. The User Manager also references the Profile Manager and Profile Wrapper classes that are used for creating and working with profiles and keeping profiles synchronized with users. A ProfileManager is a Session EJB that provides direct access to a user's profile. Both a user and group profile may be used to specify attributes for the individual user or to define a succession of attributes via the group. The ProfileManager accesses profiles via an EntityPropertyManager EJB that is defined in the ProfileManager's deployment descriptor. The ProfileWrapper is a lightweight object used to provide direct access to various profiles through interaction with a single or multiple Profile Managers; you can think of this as a façade that clients can use to access the ProfileManager. The ProfileWrapper determines which ProfileManager to use based on the user or group identity it was initialized with. Initialization can also be done with both a group and a user identity that will allow for inheritance of properties through succession. ProfileWrappers are created with the ProfileFactory Singleton object; all three of these classes are located in the com.p13n.usermgt. profile factory and can be customized. As I mentioned earlier, by default WebLogic Portal supports user profiles locally by storing properties in the portal schema; in addition, it provides the mechanisms to locate profile information from external sources such as legacy applications, other RDMBS', LDAP servers, or even flat files. All these properties are combined into a Unified User Profile (UUP; see Figure 3) that can be used directly from your portal applications. All types of profiles are, in fact, the user property sets that we will be using with Personalization.
The UUP allows you to build more complex profiles by leveraging existing user data already stored in an enterprise system. The benefits of this, of course, come from using existing user information without having to migrate that data into the portal schema; for example, you might have a UUP that contains order-specific properties from an order fulfillment database combined with personal customer data retrieved from an LDAP-provided customer profile the user created when registering with your site. A UUP provides many benefits; three of the most obvious are:
UUPs are composed of multiple profile types managed by a ProfileWrapper working with the ProfileManager and standard or customized EntityPropertyManager objects. The EntityPropertyManager is located in the com.bea.p13n.property package and is simply a remote interface to a Session EJB. EntityPropertyManagers provide the persistence mapping between users and their properties and are directly accessed by the PropertyManager EJB to build the UUP. Portal ships with EnterprisePropertyManagers that map persistent attributes of the Portal schema but supports extensibility by allowing Portal developers to create their own property mappings. To build a complex UUP we take advantage of this extensibility and write our own Session EJBs to handle the mapping of properties to our other data sources.
Implementation
In your implementation class these methods will simply throw java.lang.UnsupportedOperationException. Regardless of whether or not you are extending or customizing the default EntityPropertyManager you will have to support the following methods:
This is where you define how the new EntityPropertyManager will connect to your data source and access user properties. Obviously this is pretty vague because it may be simple or complex depending on the type of data source you are accessing, but this is also where power and flexibility are introduced in the customization of User Profile management. One thing that should be mentioned here is that a call to any of these methods via JSP Tag Libraries or direct method invocation will result in a trip to the data source. Repetition of this is usually not a good thing so you'll want to take advantage of the property caching provided by the EntityPropertyCache. If your custom EntityPropertyManager supports the creation and removal of users then you will also need to provide implementation of the createUniqueId() and removeEntity() methods. Much as its name implies createUniqueId() is responsible for adding a user in the data source based on a unique value for that user, removeEntity() is responsible for not only removing the user but also all the user properties that have been added during his lifetime. That's all there is to it. You're now ready to package your custom EntityPropertyManager EJB, deploy it, and register it with the UserProfileManager.
Deploy and Register Once the entries have been added to the ejb-jar.xml file the final step is to map them to physical EJB locations in the JNDI tree. The only thing we'll do here is find the existing entry for the UserProfileManager under <weblogic-enterprise-bean> and add a new reference description (see Listing 3). Note that here ${APPNAME} is a substitution variable that points to the node portalApp under the InitialContext of our JNDI Tree. WebLogic Server will automatically perform the variable substitution. Once you have made the appropriate changes to the deployment descriptors you're ready to go. One last word on configuration: if your custom EntityPropertyManager supports adding and removing users then you will also need to add creator and remover environment entries as well (see Listing 4). These are arbitrary since they will be mapped appropriately when a profile is added or removed.
Finishing Touches BEA WEBLOGIC LATEST STORIES
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS MOST READ THIS WEEK BREAKING NEWS FROM THE WIRES
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||