Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Supports pervasive devices Creates personalized service environments Provides self care
ibm.com/redbooks
SG24-6031-00
International Technical Support Organization Introducing Tivoli Personalized Services Manager 1.1
June 2001
Take Note! Before using this information and the product it supports, be sure to read the general information in Appendix A, Special notices on page 291.
First Edition (June 2001) This edition applies to V1R1 of Tivoli Personalized Services Manager, TPSM product number
5698-PSM for use with the AIX and Solaris operating systems.
Comments may be addressed to: IBM Corporation, International Technical Support Organization Dept. JN9B Building 003 Internal Zip 2834 11400 Burnet Road Austin, Texas 78758-3493 When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you.
Copyright International Business Machines Corporation 2001. All rights reserved. Note to U.S Government Users Documentation related to restricted rights Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp.
Contents
Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ix Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv The team that wrote this redbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Comments welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Chapter 1. Evolution of the Internet and ISP solutions . . . . . . . . . . . . . 1 Chapter 2. Overview of Tivoli Personalized Service Manager . . . . . . . . 5 2.1 What's new for this release of Tivoli Personalized Services Manager . . 6 2.1.1 Web Hosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2 Portal Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.3 Radius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.4 DB2 support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.5 Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.6 Device Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.7 Integration with WebSphere Everyplace suite . . . . . . . . . . . . . . . 10 2.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.1 Device Manager (only in TPSM) . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.2 Enrollment and service provisioning . . . . . . . . . . . . . . . . . . . . . . 11 2.2.3 Subscriber authentication and access control . . . . . . . . . . . . . . . 12 2.2.4 Customer care support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.5 Subscriber personalized service environment and self care . . . . 14 2.2.6 Integration with third party components and tools . . . . . . . . . . . . 16 2.2.7 Operation support for growing provider business . . . . . . . . . . . . 16 2.2.8 Emerging Internet business models-wholesale and virtual ISP . . 17 2.2.9 Adherence to industry standards . . . . . . . . . . . . . . . . . . . . . . . . 18 Chapter 3. Installation checklist . . . . . . . . . . . . . . . 3.1 Infrastructure used in this project . . . . . . . . . . . . . 3.2 Infrastructure installation . . . . . . . . . . . . . . . . . . . 3.2.1 AIX software . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Installing additional IBM AIX filesets . . . . . . . 3.2.3 JDK 1.2.2 installation and setup procedure. . 3.2.4 IBM HTTP Server V1.3.12 for AIX . . . . . . . . 3.3 Oracle JDBC driver 8.1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . 21 . 21 . 22 . 22 . 22 . 25 . 29 . 30
Chapter 4. Building the environment . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.1 File system configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2 Oracle installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
iii
4.3 Installing Netscape Enterprise Server 3.63 . . . . . . . . . . . . . . . . . . . . . 38 4.3.1 Creating groups and users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.3.2 Installing Netscape Enterprise Server 3.6 . . . . . . . . . . . . . . . . . . 38 4.4 Creating Netscape server instances . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.4.1 Creating the Authentication Server . . . . . . . . . . . . . . . . . . . . . . . 42 4.4.2 Creating the Customer Care Server . . . . . . . . . . . . . . . . . . . . . . 43 4.4.3 Creating the Selfcare Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4.4 Creating the System Management Tools Server . . . . . . . . . . . . . 45 4.4.5 Creating the Personalization Server . . . . . . . . . . . . . . . . . . . . . . 46 4.4.6 Creating the Premium Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4.7 Creating the Enrollment Server. . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.4.8 Creating the SDP Servlet Server . . . . . . . . . . . . . . . . . . . . . . . . 50 4.4.9 Creating the Web Hosting Content Server . . . . . . . . . . . . . . . . . 51 4.5 Installation of IBM WebSphere Application Server . . . . . . . . . . . . . . . 52 4.6 Installing Tivoli Internet Services Manager software . . . . . . . . . . . . . . 57 4.6.1 Post-Installation tasks for TISM software. . . . . . . . . . . . . . . . . . . 66 4.7 Usage and verification test of installed TISM software . . . . . . . . . . . . 69 4.7.1 Director test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.7.2 Authentication test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.3 Premium test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.4 Customer Care test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.5 Enrollment test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.6 SelfCare test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.7 Personal test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.8 Startup order for starting up a system. . . . . . . . . . . . . . . . . . . . . . . . . 70 4.8.1 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.2 Start Provisioning server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.3 Transaction Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.4 Start Netscape Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.5 Start WebSphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Chapter 5. Enrollment and service provisioning . . . 5.1 Registration configuration . . . . . . . . . . . . . . . . . . . . 5.1.1 Creation of a Realm . . . . . . . . . . . . . . . . . . . . 5.1.2 Creation of Registration Names . . . . . . . . . . . 5.1.3 Creation of Access Codes . . . . . . . . . . . . . . . 5.1.4 Creation of a deal . . . . . . . . . . . . . . . . . . . . . . 5.1.5 Creation of deal text . . . . . . . . . . . . . . . . . . . . 5.1.6 Creating a property. . . . . . . . . . . . . . . . . . . . . 5.1.7 Associating the deals with the Realm . . . . . . . 5.1.8 Associating the Access Codes with the deals . 5.1.9 Creating a Sales Channel . . . . . . . . . . . . . . . . 5.1.10 Creating a Method of Payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 . 73 . 76 . 77 . 79 . 82 . 84 . 87 . 90 . 92 . 93 . 95
iv
Creating a List of Method of Payment . Association of a MOP list and a deal . Managing the enrollment process . . . . Enrollment JSPs . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . 96 . . 98 . . 99 . 108 . 111 . 112 . 113 . 113 . 114 . 133 . 135 . 138 . 144
Chapter 6. Subscriber authentication and access 6.1 Authentication stages . . . . . . . . . . . . . . . . . . . . . 6.2 Authentication modes . . . . . . . . . . . . . . . . . . . . . 6.3 Internet world . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Structure of Authentication Server . . . . . . . 6.4 Wireless World . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Structure of Authentication Server . . . . . . . 6.4.2 Business case 1 . . . . . . . . . . . . . . . . . . . . . 6.4.3 Business case 2 . . . . . . . . . . . . . . . . . . . . .
Chapter 7. Using Customer Care and Director Tool . . . . . . . . . . . . . . 149 7.1 Assigning login IDs and access control profiles to CSRs . . . . . . . . . 150 7.2 Logging on to Customer Care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 7.3 Log on steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.4 Managing consumer accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.4.1 Enroll a new consumer subscriber . . . . . . . . . . . . . . . . . . . . . . 156 7.4.2 View and update a subscriber account . . . . . . . . . . . . . . . . . . . 157 7.4.3 Changing a subscriber's deal . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.4.4 Change subscriber's method of payment . . . . . . . . . . . . . . . . . 159 7.4.5 Disconnect a subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.4.6 Reconnect a subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 7.4.7 Create a consumer child subscriber . . . . . . . . . . . . . . . . . . . . . 162 7.4.8 Disconnect a child subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . 163 7.5 Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 7.6 Additional services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7.7 Using the Search Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.7.1 Search criteria for individual subscribers . . . . . . . . . . . . . . . . . 165 7.7.2 Exact match feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Chapter 8. Subscriber Selfcare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.2 Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.3 Running Subscriber Selfcare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 8.3.1 Changing a subscribers password . . . . . . . . . . . . . . . . . . . . . . 172 8.3.2 Changing personal information . . . . . . . . . . . . . . . . . . . . . . . . . 174 8.3.3 Change payment information . . . . . . . . . . . . . . . . . . . . . . . . . . 176 8.3.4 Adding new members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Chapter 9. Subscriber Personalized Service Environment . . . . . . . . 181 9.1 Portal Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2 Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2.1 Multi-device Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2.2 User Preferences API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2.3 Hierarchical repository of referenced links . . . . . . . . . . . . . . . . 182 9.2.4 Double click AdServer interface . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.5 JSP Portlet framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.6 WAP portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.7 WES Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.2.8 Portal page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.3 Portal software architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 9.3.1 Authentication API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 9.3.2 User preferences API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 9.4 JSP portlets framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9.4.1 JSP portlet architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.4.2 Portlet design pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 9.4.3 Portlet addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 9.4.4 Portlet API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 9.5 TPSM portlet library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 9.5.1 Structural portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 9.6 Service portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 9.6.1 Customizor Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 9.6.2 LinkSelector Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.6.3 Calendar Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.6.4 Agenda Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 9.6.5 AddressBook Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 9.7 Filter API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 9.8 Profiler API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 9.9 Example of personalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.9.1 Internet world . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.9.2 Wireless World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Chapter 10. Virtual ISP . . . . . . . . . . . . . . 10.1 Overview . . . . . . . . . . . . . . . . . . . . . 10.2 REALMs . . . . . . . . . . . . . . . . . . . . . . 10.2.1 User groups Within Realms . . . 10.3 Enrollment and service provisioning . 10.4 Configuring a Virtual ISP . . . . . . . . . 10.5 Enrolling into the Virtual ISP . . . . . . . . . . . . . . .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. . . . . . . . . . . . . . . . 263 . 263 . 264 . 265 . 265 . 266 . 267
vi
11.2 iTk usage scenarios . . . . . 11.3 iTk classes . . . . . . . . . . . . 11.3.1 Core classes. . . . . . . 11.3.2 iTk Business Objects
. . . .
. . . .
. . . .
. . . .
.. .. .. ..
. . . .
. . . .
. . . .
.. .. .. ..
. . . .
. . . .
. . . .
. . . .
.. .. .. ..
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
Chapter 12. Device Manager . . . . . . . . . . . . . . . . . . 12.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Device Manager on TPSM . . . . . . . . . . . . . . . . . 12.3 Device Manager Components . . . . . . . . . . . . . . 12.3.1 Device Manager server. . . . . . . . . . . . . . . . 12.3.2 Device plug-ins . . . . . . . . . . . . . . . . . . . . . . 12.3.3 Device management server API . . . . . . . . . 12.3.4 Device Manager database . . . . . . . . . . . . . 12.3.5 Device management API . . . . . . . . . . . . . . 12.3.6 Device Manager console . . . . . . . . . . . . . . 12.4 Device Manager functions . . . . . . . . . . . . . . . . . 12.5 Supported devices . . . . . . . . . . . . . . . . . . . . . . . 12.5.1 Palm Computing PDAs . . . . . . . . . . . . . . . . 12.5.2 Compaq Aero 8000 H/PC Pro devices . . . . 12.5.3 NetVista Internet Appliance devices . . . . . . 12.5.4 Generic Windows CE devices . . . . . . . . . . . 12.6 Features of Device Manager . . . . . . . . . . . . . . . 12.6.1 Extensibility for managing various devices . 12.6.2 Centralized management . . . . . . . . . . . . . . 12.6.3 Provisioning to other system . . . . . . . . . . . . 12.6.4 Scalability and availability . . . . . . . . . . . . . .
. . 277 . . 277 . . 278 . . 278 . . 279 . . 280 . . 281 . . 281 . . 282 . . 283 . . 284 . . 285 . . 286 . . 286 . . 287 . . 288 . . 289 . . 289 . . 290 . . 290 . . 290
Appendix A. Special notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Appendix B. Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 B.1 IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 B.2 IBM Redbooks collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 B.3 Other resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 How to get IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 IBM Redbooks fax order form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 IBM Redbooks review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
vii
viii
Figures
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Tivoli Internet Services Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Device Manager Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Enrollment and service provisioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Subscriber authentication and access control . . . . . . . . . . . . . . . . . . . . . . 13 Customer care support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Subscriber personalization and self care . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Operation support for growing provider business . . . . . . . . . . . . . . . . . . . 17 Supporting emerging Internet business models. . . . . . . . . . . . . . . . . . . . . 18 Netscape Server Administration console . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Form for Authentication Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Form for Customer Care Serer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Form for Selfcare Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Form for System Management Tools Server . . . . . . . . . . . . . . . . . . . . . . . 45 Form for Personalization Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Form for Premium Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Form for Enrollment Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Form of CGI for Enrollment Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Form for SDP Servlet Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Form for the Web Hosting Content Server. . . . . . . . . . . . . . . . . . . . . . . . . 51 WebSphere Application Server Installation on AIX - welcome page . . . . . 53 WebSphere Application Server Installation on AIX - type of installation . . 53 WebSphere Installation on AIX - selecting components to install . . . . . . . 54 WebSphere Installation on AIX - selecting plug-ins to install. . . . . . . . . . . 55 WebSphere Installation on AIX - web server configuration file . . . . . . . . . 55 WebSphere Installation on AIX - indicating database repository . . . . . . . . 56 WebSphere Installation on AIX - security information . . . . . . . . . . . . . . . . 56 WebSphere Installation on AIX - specifying WebSphere home directory . 57 TISM/TPSM installationwelcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Choosing the database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Local Information for the install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Oracle configuration information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 TISM install components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 TISM prerequisite checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Prerequisites installation directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Installation verification dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Installation is finished . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 WebSphere administration console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Starting up an Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 The TISM Administration Console dialog box . . . . . . . . . . . . . . . . . . . . . . 74
ix
41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83.
Director Tool Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Structure of the enrollment objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Press the right mouse button and select Add . . . . . . . . . . . . . . . . . . . . . . 76 Dialog box for the creation of Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Registration Names dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Flow of a multi-access registration name. . . . . . . . . . . . . . . . . . . . . . . . . . 81 Access Code dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Deal examples offered to the user in the enrollment process . . . . . . . . . . 82 Dialog of the creation of a new deal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Deal text dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Dialog for properties of a deal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Table with the deals and deal text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Menu to create a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Dialog to create the property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Creating a value for FAVBOOKS property. . . . . . . . . . . . . . . . . . . . . . . . . 90 Table of deals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Example of how to relate a deal with several Realms . . . . . . . . . . . . . . . . 92 Relation of access code and deals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 A new Sales Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Table of existing Sales Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Example of selection of created Sales Channel in the new Access Code . 95 Payment Method dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Method of Payment list dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Relationship between method of payment list and table . . . . . . . . . . . . . . 97 Example of how to relate the MOP list to MOPs . . . . . . . . . . . . . . . . . . . . 98 Example of combo-box of MOP list for a deal . . . . . . . . . . . . . . . . . . . . . . 99 Enroll home page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Enroll with access code PUBLIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Agreement window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Personal detail of enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Deal and Userid details for enroll details . . . . . . . . . . . . . . . . . . . . . . . . . 104 Password for enroll details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Details of chosen deal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Payment Method details for enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Confirmation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Congratulations screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Configuration enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Choosing the cheapest deal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Structure of directories of enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 How the authentication server works . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Authentication form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Active components of the Authentication Server for internet access. . . . 115 Cluster configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
84. Premium configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 85. Hierarchal device type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 86. WAP architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 87. Active components of the Authentication Server (mobile internet) . . . . . 136 88. Example of navigation for business case 1 . . . . . . . . . . . . . . . . . . . . . . . 144 89. The TISM Administration Console dialog box . . . . . . . . . . . . . . . . . . . . . 150 90. TISM Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 91. Add a New Access Role (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 92. Add a New Access Role (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 93. TISM Administration Console (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 94. TISM Administration Console (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 95. Add a New Login Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 96. TISM Administration Console (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 97. Customer care logging page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 98. TISM customer care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 99. Search results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 100.Subscriber update panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 101.Changing method of payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 102.Disconnecting a user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 103.User disconnected. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 104.Enrolling a customer child subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 105.TISM Reporting Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 106.Selfcare initial page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 107.Logging into Selfcare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 108.Changing a subscribers password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 109.Change Password confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 110.Password successfully changed message . . . . . . . . . . . . . . . . . . . . . . . 174 111.Change Personal Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 112.Changing Personal Information confirmation . . . . . . . . . . . . . . . . . . . . . 176 113.Changing Payment Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 114.Changing method of payment confirmation. . . . . . . . . . . . . . . . . . . . . . . 178 115.Adding a new member (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 116.Adding a new member (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 117.Portal software architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 118.JSP Portlet Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 119.Pattern model-view-controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 120.More detail about the architecture of JSP Portlets . . . . . . . . . . . . . . . . . 204 121.Example of welcome.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 122./perso/home without an authentication . . . . . . . . . . . . . . . . . . . . . . . . . . 205 123./perso/home with authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 124./perso/home for WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 125.Sending a command and parameters to a portlet in the HTTP request . 208 126.Use of LayoutSelectorComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
xi
127.Example for HTML browsers of ComponentSelectorComponent . . . . . . 214 128.Example for WAP browsers of ComponentSelectorComponent . . . . . . . 214 129.Example of redirection to authentication server . . . . . . . . . . . . . . . . . . . 241 130.Customizor component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 131.Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 132.Abstracts news . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 133.Content news . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 134.The selection of themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 135.An applied theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 136.Example of link selector step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 137.Example of link selector step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 138.Example of link selector step 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 139.Example of Calendar component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 140.Example of Agenda component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 141.Example of ComponentSelector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 142.ComponentSelectorComponent after adding an external application . . . 256 143.New application added by the user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 144.Internet business model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 145.Enrollment and Service Provisioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 146.iTk architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 147.iTk usage scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 148.iTk core classes structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 149.Device Manager on TPSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
xii
Tables
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. AIX requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Netscape Enterprise Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Values of Registration Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Required fields for the creation of a new deal . . . . . . . . . . . . . . . . . . . . . . 83 Fields to create deal text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Fields to create a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Fields for a Sales Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Description of the required fields for a method of payment . . . . . . . . . . . . 95 JSPs for enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Property files for enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Limitations of single-domain mode authentication . . . . . . . . . . . . . . . . . . 113 JSPs for SelfCare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 SelfCare.properties file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 AccessBean implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 List of portlet commands for the LayoutSelectorComponent . . . . . . . . . . 212 Macros for ComponentSelectorComponent. . . . . . . . . . . . . . . . . . . . . . . 217 Commands for ComponentSelectorComponent . . . . . . . . . . . . . . . . . . . 217 Commands for Aggregator.class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Commands for Customizor Portlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Commands for LinkSelectorComponent.class . . . . . . . . . . . . . . . . . . . . . 226 Commands for Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Commands for Agenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Commands for AddressBook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 DM functions and device plugins matrix . . . . . . . . . . . . . . . . . . . . . . . . . 285
xiii
xiv
Preface
This redbook will help you install, tailor, and configure the new Tivoli Personalized Service Manager (TPSM) V1.1.1. This redbook is about building business solutions using the Tivoli Personalized Service Manager product to enable ISPs to manage different domains or realms and provide different services such as customer care, selfcare, premium, personalization server, and authentication, among others for any type of devices, Web browsers, or pervasive computing devices. It will help you to understand this product and focuses on implemented solutions for both environments; Web and mobile internet browsers. TPSM has been integrated in an AIX environment running as a database, Oracle 8.1.5. In this redbook, you will find information that will help you successfully implement solutions to manage the domains, access Web, and enterprise applications from desktop browsers and the new class of client devices such as WAP phones, Palm Pilots, and WorkPads to the personalized server. A basic knowledge of AIX, Oracle, HTTP, and WAP protocols as well as some understanding of Web and Java technologies (HTML, WML, servlets, and JSPs) and the terminology used in Web and enterprise applications is assumed.
xv
pervasive. For the last several months she has concentrated in pervasive device development, e-business, and simulation with multi-agents. Edgar Gutierrez is an RS/6000 support specialist for Grupo Vitro, an IBM customer in Monterrey, Mexico. He has 5 years of experience with RS/6000. His areas of expertise includes Oracle implementation and support as well as performance tuning. For the last year he has concentrated on the software platforms for e-business in his company. Thanks to the following people for their invaluable contributions to this project: Tivoli Systems Doug Geiger, Kent Hayes, Al Montibello, Theresa Morris, Dean Skidmore, IBM USA Ernest A. Keenan, Bill Tracey IBM France Jean-Michel Porce IBM Spain Rafael Sanchez Alfonso
Comments welcome
Your comments are important to us! We want our Redbooks to be as helpful as possible. Please send us your comments about this or other Redbooks in one of the following ways: Fax the evaluation form found in IBM Redbooks review on page 317 to the fax number shown on the form. Use the online evaluation form found at ibm.com/redbooks Send your comments in an Internet note to redbook@us.ibm.com
xvi
1982
1983
1984 1985
1987
Number of hosts breaks 100,000. The World comes on-line (world.std.com), becoming the first commercial provider of Internet dial-up access. Number of hosts breaks 1,000,000. The term surfing the Internet is coined by Jean Armour Polly. Mosaic takes the Internet by storm; WWW proliferates at a 341,634% annual growth rate of service traffic. Gopher's growth is 997%. WWW edges out telnet to become 2nd most popular service on the Net (behind ftp-data) based on percentage of packets and bytes traffic distribution on NSFNET. WWW surpasses ftp-data in March as the service with greatest traffic on NSFNet based on packet count, and in April based on byte count. Various ISPs suffer extended service outages, bringing into question whether they will be able to handle the growing number of users. AOL (19 hours), Netcom (13 hours), and AT&T WorldNet (28 hours - E-mail only).
1994
1995
1996
Starting in 1990, individual companies, such as The World, have been writing custom ISP programs to enroll customers, bill customers, provision services, deliver content, provide hot backup, rewrite code to increase scalability, and write new code for premium services. Many of those programs are still in use today, maintained by an army of programmers, each fighting the issues of scalability and content. There is a better way. In late 1997, the IBM Telecommunications and Media Industry Solutions Unit wanted to enter the Internet space. IBM named the new system ISMS (Internet Subscription Management System). In mid 1999 the process to move the ISMS team to Tivoli began. The name was changed to TSM (Tivoli Subscription Manager), and ultimately, to TISM (Tivoli Internet Services Manager) and TPSM (Tivoli Personalized Services Manager), where TPSM operates on the same code base as TISM with some additional modules to support pervasive device management. TISM is a completely integrated infrastructure of software components for Internet service provisioning. TISM is an industrial strength system designed to allow the Internet Service Provider (ISP) to support multiple separately branded offerings simultaneously, and provide each brand with a unique and completely stand-alone identity and full range of business offerings. To do
this, TISM is designed for continuous operation, flexible enhancement, and is highly scalable. The system relies on industry standard hardware and software components with a flexible architecture for integrating varied components so that ISPs operating under the TISM umbrella can offer their subscribers an unlimited variety of Internet value-add features and benefits without having to alter the core base of information management and customer service platform that TISM maintains in a centralized database. TISM is designed to anticipate growth by allowing service providers to initially deploy a system size that comfortably accommodates their immediate operational needs and grow it exponentially to support a subscription install base of millions of users while providing uninterrupted services and maintaining database consistency. TPSM expands on TISM. It is a complete business infrastructure that empowers ISPs to offer new and different types of value-added and premium-content services. TPSM will carry ISP s into the next generation of IP communication services. TPSM extends the capability of present day Internet services to new mobile and handheld service offerings. TPSM is designed to scale and manage millions of subscribers and pervasive devices in a feature-rich environment. TPSM's new operational service paradigm goes beyond the simple connection of subscribers by single devices. TPSM associates and links subscribers with individual Personalized Service Environments and allows each subscriber to access their customized secure environment from a variety of pervasive devices anywhere and anytime. Tivoli and IBM will continue to push the envelope on developing scalable Internet solutions. In 1999 IBM became the first Corporate partner to be approved for Internet2 access.
2.1 What's new for this release of Tivoli Personalized Services Manager
Tivoli Internet Services Manager contains several new features to help enhance the functionality. These include a web content hosting system that allows user to create and maintain personal web pages, a portal toolkit to enhance personalization, a radius server to assist with authentication, localization, and a device manager system to help filter realms and deals. Each of these new enhancements are discussed in detail in the following paragraphs.
WebSpace Administration Servlet WebSpace management application provides the user with the following operations: Personal Web space display File upload and automatic publishing File download File delete
Targeted Ads: Interface with Double Click Ads Server Personalization allows users to customize their device's home page. Subscribers can proactively customize their portal page by configuring categories such as: Stock quotes (personal portfolio) Weather (local, national, or international) Entertainment (music, movies, theatre, etc.) Travel (destinations, prices, etc.) News (local, national, or international) The Tivoli Personalized Service Manager and virtual ISPs can personalize subscriber home pages over and above the choices made by subscribers by adding: Links to local content based on subscriber profile Targeted ads pulled from an external ad-queue management system
2.1.3 Radius
The following are enhancements and changes to the Radius server. DB2 support - DB2 is not supported in this release. NLS message support - RADIUS will now support translated messages written to an NLS log file in addition to the English-only message written to the standard log file. IP Allocation - Rather than using the IP address generated by the RADIUS client (NAS), the RADIUS server can be configured to generate an IP address from a pool of IP addresses set up through the Director Console.
2.1.5 Localization
Enhancements were made to the data model, toolkits, and applications to support localization. The purpose of localization is to have the ability to translate into many different languages. In this release, only Japanese translation is provided.
2.2 Features
This section highlights the features that make TISM and TPSM formidable Internet service provisioning systems. TISM and TPSM contain several new features to help enhance the functionality that are detailed in the following pages.
10
11
Realm distinctions provide benefits to system management. Customer Care Reps can be granted complete read and write security provisions to specific realms, which keeps each realm's data separate and secure from any others.
12
13
14
The portal engine is delivered with built-in components, such as Personal Information Management (PIM), components such as calendar, agenda, and address book. These components allow the subscriber to customize the portal pages on their devices. Some additional key functions associated with pTk are: 1. Multi-device Portal Engine Web devices (e.g., PC, Win CE, screenphones), WAP devices 2. User Preferences API Users and user groups profiling 3. Referenced Links Management Hierarchical repository of links referenced by the portal 4. Vertical Services Integrated with pTk Web Content Hosting PIM: Calendar, Agenda, Address Book, etc. 5. JSP Components Framework Components framework drastically simplifies JavaServer Pages (JSP) writing Components library: PIM components, structural components
15
6. Authentication Services User authentication and device type identification Single sign-on, Premium content access control, WAP support 7. Targeted Ads: Interface with Double Click Ads Server This feature provides a marketing opportunity for ISPs. They can target their subscriber's portal pages for banner ads and special interest notices. Another aspect of personalization is self-care. Subscribers can access and modify some of their profile data. They can update their address and telephone data, change their billing plan and method of payment data, and subscribe to premium content through the Tivoli Personalized Services Manager's self-care application, which is linked to the central database from links on their portal page.
16
17
18
Sun Solaris support Industry standard protocols and languages include: Structured Query Language (SQL '92) standard interface for relational database access. The Tivoli Internet Services Manager RADIUS authentication server, which complies with Internet Engineering Task Force (IETF) specifications. Web user interfaces and publishing based on industry standard implementations of Java, JavaScript, HTML, and similar web content languages. Java based APIs (Tivoli Internet Services Manager Integration Toolkits iTk's) Java Standard Java Server Pages (JSP) interfaces and Servlets Use of industry-standard utilities such as Perl for CGI. TCP/IP-based communications between components and systems. Standard scripts to assist in installation, maintenance, and troubleshooting.
19
20
IBM AIX Version 4.3.3 IBM HTTP Server 1.3.12 or Netscape Enterprise Server 3.6 JDK 1.2.2 with PTF 7. See IBM APAR IY12075 Oracle Database Enterprise Edition 8.1.5 IBM DB2 Version 7.1 WebSphere Application Server V3.5 Standard Edition using Instant DB Option.
RS/6000 or RS/6000 SP running AIX V4.3.3, with maintenance level 06 applied Support for an appropriate network interface Minimum 300 MB of free disk space on the /usr filesystem for installation CD-ROM drive Minimum 256MB of memory; 512 MB recommended
21
AIX Software: AIX 4.3.3.06 Tivoli Personalized Services Manager V1.1.1 WebSphere Application Server Standard V3.5 Netscape Enterprise Server 3.63 Oracle Enterprise Edition 8.1.5 Oracle JDBC driver 8.1.6 JDK 1.2.2 with APAR IY12075 IBM HTTP Server V1.3.12
22
X11.base.lib.4.3.3.2 X11.Dt.lib.4.3.3.2 X11.Dt.rte.4.3.3.3 bos.up.4.3.3.3 bos.sysmgt.serv_aid.4.3.3.2 bos.rte.libpthreads.4.3.3.2 bos.net.tcp.client.4.3.3.3 bos.mp.4.3.3.3 bos.adt.prof.4.3.3.3 bos.adt.include.4.3.3.1 To verify that we have installed the fileset, we used the lslpp command as shown below:
# lslpp -l bos.net.tcp.* Fileset Level State Description ---------------------------------------------------------------------------Path: /usr/lib/objrepos bos.net.tcp.adt 4.3.3.25 COMMITTED TCP/IP Application Toolkit bos.net.tcp.client 4.3.3.26 COMMITTED TCP/IP Client Support bos.net.tcp.server 4.3.3.25 COMMITTED TCP/IP Server bos.net.tcp.smit 4.3.3.25 COMMITTED TCP/IP SMIT Support Path: /etc/objrepos bos.net.tcp.client bos.net.tcp.server
We can see that the bos.net.tcp.client is at the 4.3.3.26 level and we required 4.3.3.3 as minimum, so with the 4.3.3.26 we do not have any problem. 1. Use the following steps to install the required filesets with smit: - smitty or smit - Select Software Installation and Maintenance. - Select Install and Update Software. - Select Install and Update from LATEST Available Software. - Enter INPUT device (press F4 to list devices). - Select the CD-ROM where the IBM AIX CD is located, then press Enter.
23
- Select SOFTWARE to install (press F4 to list available software from CD). - Using the find and select keys on all of the following file sets: bos.adt (select ALL) Base Operating System Application Developers Toolkit bos.compat.termcap - Termcap Compatibility Package (2) xlC.rte - C++ runtime library for IBM AIX (select ALL) X11.adt - Applications Development Toolkit (ALL) X11.base (x windows) (ALL) perl.rte 5.5.3 (ALL) X11.motif.mwsm.4.3.3.1 X11.motif.lib.4.3.3.2 X11.adt.motif.4.3.3.1 X11.compat.lib.X11R5.4.3.3.2 X11.base.rte.4.3.3.2 X11.base.lib.4.3.3.2 X11.Dt.lib.4.3.3.2 X11.Dt.rte.4.3.3.3 bos.up.4.3.3.3 bos.sysmgt.serv_aid.4.3.3.2 bos.rte.libpthreads.4.3.3.2 bos.net.tcp.client.4.3.3.3 bos.mp.4.3.3.3 bos.adt.prof.4.3.3.3 bos.adt.include.4.3.3.1 - When you have finished, press Enter to install the selected filesets. 2. To obtain maintenance level 06, please contact your local Software Service Center or use FixDist to get the latest maintenance level for the AIX. Once you obtained the ML, use the following steps to install the update with smit: smitty or smit Select Software Installation and Maintenance.
24
Select Install and Update Software. Select Install and Update from LATEST Available Software. Enter INPUT device (press F4 to list devices). Select the directory where you downloaded the maintenance level Select all file sets from SOFTWARE maintenance level 6 When you have finished, press Enter to install.
- Change directory to the directory that contains uncompressed results. If the installation package table of contents (the .toc file) does not exist, create it with the following command while still in the install directory:
inutoc .
To perform the installation, you need to be a user that has root privileges. In an AIX terminal window, enter the following command:
smitty installp
This will bring up the AIX System Management Interface Tool window and put you at the Install and Update Software menu as shown in the next screen:
25
Install and Update Software Move cursor to desired item and press Enter. Install and Update from LATEST Available Software Update Installed Software to Latest Level (Update All) Install and Update Software by Package Name (includes devices and printers) Install Software Bundle (Easy Install) Update Software by Fix (APAR) Install and Update from ALL Available Software
F1=Help Esc+9=Shell
F2=Refresh Esc+0=Exit
F3=Cancel Enter=Do
Esc+8=Image
Choose Install and Update from LATEST Available Software to invoke the installation process. After that, enter the device or directory where the JDK installation package is located, as shown in the next screen:
Install and Update from LATEST Available Software Type or select a value for the entry field. Press Enter AFTER making all desired changes. [Entry Fields] * INPUT device / directory for software [] +
F4=List Esc+8=Image
smitty will then let you choose which software to install, as shown in the next
26
Install and Update from LATEST Available Software Type or select values in entry fields. Press Enter AFTER making all desired changes. [Entry Fields] /software/JDK [_all_latest] + no + yes + no + yes + yes + no + no + yes + no + yes +
* INPUT device / directory for software * SOFTWARE to install PREVIEW only? (install operation will NOT occur) COMMIT software updates? SAVE replaced files? AUTOMATICALLY install requisite software? EXTEND file systems if space needed? OVERWRITE same or newer versions? VERIFY install and check file sizes? Include corresponding LANGUAGE filesets? DETAILED output? Process multiple volumes?
F1=Help F5=Reset
F2=Refresh F6=Command
F3=Cancel F7=Edit
F4=List F8=Image
After it finishes, it will provide you with an installation summary at the bottom of the command status screen, as shown in the next screen. You should verify each components installation status.
Before command completion, additional instructions may appear below. [MORE...143] Installation Summary -------------------Name Level Part Event Result ----------------------------------------------------------------------Java_dev2.ext.plugin 1.2.2.0 USR APPLY SUCCESS Java_dev2.ext.jaas 1.2.2.0 USR APPLY SUCCESS Java_dev2.ext.commapi 1.2.2.0 USR APPLY SUCCESS Java_dev2.rte.lib 1.2.2.0 USR APPLY SUCCESS Java_dev2.rte.bin 1.2.2.0 USR APPLY SUCCESS Java_dev2.samples.demos 1.2.2.0 USR APPLY SUCCESS [BOTTOM] F1=Help F8=Image F2=Refresh F9=Shell F3=Cancel F10=Exit F6=Command /=Find
After the successful installation of IBM Developer Kit for AIX, Java Technology Edition, Version 1.2.2, we proceded to apply PTF 7. See APAR IY12075.
27
The instfix -ik command tells you if youve applied the APAR, as seen in the next screen:
# instfix -ik IY12075 There was no data for IY12075 in the fix database.
The above output tells us that we have not installed all filesets for IY12075. You can obtain the APAR from:
http://techsupport.services.ibm.com/rs6k/fixdb.html
You have to download the next filesets: - Java_dev2.adt.debug.1.2.2.8 - Java_dev2.adt.src.1.2.2.8 - Java_dev2.ext.plugin.1.2.2.8 - Java_dev2.rte.bin.1.2.2.8 - Java_dev2.rte.lib.1.2.2.8 Total number of images: 5 Total byte size of fix package(s): 44889088 To install the APAR, you should log on as a root user and perform the following steps: 1. Change directory to the directory that contains uncompressed results. If the installation package table of contents (the .toc file) does not exist, create it with the following command while still in the install directory:
inutoc .
3. Specify the source directory of installation package, and click Enter to start the installation. At the end of the installation process, you can verify the installation status from the installation summary. We used the instfix -icvk command to determine the status of IY12075. See the next screen.
28
# instfix -ivck IY12075 #Keyword:Fileset:ReqLevel:InstLevel:Status:Abstract IY12075:Java_dev2.adt.debug:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.adt.src:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.ext.plugin:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.rte.bin:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.rte.lib:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 #
There are five filesets for IY12075. The Status field tells us if weve installed the fileset or not. If it says +, it means that weve already applied the correct level of fileset. If it shows -, it indicates that we need to apply the level of fileset that the ReqLevel field shows you. Setting environment variable After installation, the JDK needs to know the path to its own class libraries. To enable the JDK to find other class libraries, you should set the system CLASSPATH environment variable. You should also set the JAVA_HOME environment variable to point to the base directory for the JDK, which is /usr/jdk_dev2 by default. You can set this variable in your current AIX session by using the export command or put these commands into your login profile.
export CLASSPATH=$CLASSPATH:.:path1:path2:any path to class library export JAVA_HOME=/usr/jdk_dev2
3.2.4.1 Installing IBM HTTP Server If you install the HTTP Server from a downloaded package, you should log on as a root user, and perform the following steps: Uncompress the downloaded tar file using:
tar -xvf <tar-filename>
Change directory to the directory that contains uncompressed results. If the installation package table of contents (the .toc file) does not exist, create it with the following command while still in the install directory:
inutoc .
29
Specify the source directory of installation package, and click Enter to start the installation. At the end of the installation process, you can verify the installation status from the installation summary.
After we downloaded the classes12.zip file, we copied to the $ORACLE_HOME/jdbc/lib directory. This file must be available to Java through the CLASSPATH variable.
30
Also we need to create two new file systems; /db and /var/adm/logs. For /var/adm/logs, we are going to create it in the rootvg volume group.
crfs -v jfs -g'rootvg' -asize='49152' -m'/var/adm/logs' -Ayes
For /db, we are going to create in a new volume group dbvg. If you have only one disk, its possible to create the new file system for the database in the same volume group. This change requires that you change the Oracle scripts. We will explain that in Section 4.2, Oracle installation on page 32. We create the volume group and the new file system /db.
mkvg -f -y'dbvg' -s'8' hdisk1 crfs -v jfs -g'dbvg' -asize=' 4259840' -m'/db' -Ayes
31
Try to open the smit console: smit. If the smit console doesnt open you have to solve this problem. 8. Unmount any CD-ROMs, making sure there are no file systems that begin with the name cdrom. 9. Place the Oracle 8i CD in the CD-ROM drive 10.Change directory to /usr/TivTSM/install/db/oracle. 11. export PATH=$PATH:/usr/TivTSM/install/db/oracle 12.../TSMOracle8i 13.Press Enter when you are prompted to place the Oracle CD in the drive. 14.Answer Yes when prompted for Checking for 'dba' group...'dba' group
not found. Create? created.
16.Answer /db when prompted, What is the 'mount point' for Oracle user's
home?
32
This process initializes Java Virtual Machine, which may take up to 10 minutes. If after 10 minutes you do not see the message Install phase starts, updates every 15 seconds, an error has occurred. Press Ctrl+C to stop the install. Otherwise, within 20-90 minutes, you will receive a message informing you of the progress of the Oracle software installation. If you do not receive a message, or if the install process immediately asks for the database instance, an error has occurred. You should quit the install at once and look in the log file for errors. The cause of errors in this part is usually a wrong installation of Java 1.2.2 17.When the install and link phase have completed, you will receive the following message: Enter the full pathname of the local bin directory: [/usr/local/bin]:. Use the default value. 18.Enter ispb when asked, Enter instance name to be created, or 'q' to abort:. 19.Enter n when asked, Do you want logging on or off for this install?
(n/f)
20.Answer How many subscribers in this database? Note: The minimum number of subscribers is 10,000, while the maximum number is limited by your hardware. Don't use any punctuation, i.e., 100000. 21.Press Enter to review/update the /db/creispblv.ksh file. If all the information looks acceptable, quit the file without saving. This information is also saved in the /usr/TivTSM/install/db/oracle/dbcalc.log file. An example of this file is:
Physical Partition Size: 16MB File Units Size ====== ===== ========= Data: 8 127999K Index: 6 95999K Temp: 2 31999K System: 11 User: 1 Rbs: 1 Drsystem: 6 Oem: 1 Redo: 1 Ctrl: 1
This table shows the values that you have to have in mind to review the files /db/creispblv.ksh and /db/app/oracle/admin/ispb/create/ispbrun1.ksh. /db/creispblv.ksh
33
#!/bin/ksh COMMAND=$(basename $0 .ksh) DIR=$(dirname $0) echo "Sending output to $DIR/$COMMAND.log" exec 2>$DIR/$COMMAND.log 1>&2 MAXRC=0 mklv -a c -y lvispbdata -ex -u1 rootvg 8 hdisk3
Compare the number of lvispbdata units with the number of units for data in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbindex -ex -u1 rootvg 6 hdisk3
Compare the number of lvispbindex units with the number of units for index in the table.
RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a RC=$?;[ mklv -a $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbrbs1 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbrbs2 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbredo11 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbredo12 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbredo13 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbredo21 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbredo22 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbredo23 rootvg 1 hdisk3 $RC -gt $MAXRC ] && MAXRC=$RC c -y lvispbsys rootvg 11 hdisk3
Compare the number of lvispbsys units with the number of units for system in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbdrsys rootvg 6 hdisk3
Compare the number of lvispbdrsys units with the number of units for drsystem in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbtemp rootvg 2 hdisk3
Compare the number of lvispbtemp units with the number of units for temp in the table.
34
$RC -gt $MAXRC ] c -y lvispbctrl1 $RC -gt $MAXRC ] c -y lvispbctrl2 $RC -gt $MAXRC ] c -y lvispbctrl3 $RC -gt $MAXRC ] c -y lvispbuser
&& MAXRC=$RC rootvg 1 hdisk3 && MAXRC=$RC rootvg 1 hdisk3 && MAXRC=$RC rootvg 1 hdisk3 && MAXRC=$RC rootvg 1 hdisk3
Compare the number of lvispbuser units with the number of units for user in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispboem rootvg 1 hdisk3
Finally, compare the number of lvispboem units with the number of units for oem in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC chown oracle8:dba /dev/lvispb* chown oracle8:dba /dev/rlvispb* exit $MAXRC
The others usually are 1 so you dont have to worry about them. Another important point is the volume group where you are going to install it. Its specified here, so if you want to install in another volume group (in our case dbvg) you must change the command to read:
mklv -a c -y lvispboem dbvg 1 hdisk3
If you change the name of the instance for the db, you will notice that the names for the logical volumes change in the middle for the name of the instance. /db/app/oracle/admin/ispb/create/ispbrun1.ksh
#!/bin/sh ORACLE_SID=ispb export ORACLE_SID /db/app/oracle/products/8.1.5/bin/svrmgrl << EOF connect internal @/db/app/oracle/products/8.1.5/rdbms/admin/catalog.sql; CREATE ROLLBACK SEGMENT r0 TABLESPACE SYSTEM STORAGE (INITIAL 32K NEXT 64K MINEXTENTS 10 MAXEXTENTS 512); ALTER ROLLBACK SEGMENT r0 ONLINE;
35
REM ************ TABLESPACE FOR OEM_REPOSITORY *************** CREATE TABLESPACE OEM_REPOSITORY DATAFILE '/dev/rlvispboem' SIZE 5M REUSE AUTOEXTEND ON NEXT 25M MAXSIZE 80M MINIMUM EXTENT 128K DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); REM ************** TABLESPACE FOR ROLLBACK ***************** CREATE TABLESPACE RBS1 DATAFILE '/dev/rlvispbrbs1' SIZE 12M REUSE DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 2 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE '/dev/rlvispbrbs1' AUTOEXTEND ON; REM ************** TABLESPACE FOR ROLLBACK ***************** CREATE TABLESPACE RBS2 DATAFILE '/dev/rlvispbrbs2' SIZE 12M REUSE DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 2 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE '/dev/rlvispbrbs2' AUTOEXTEND ON; REM ************** TABLESPACE FOR TEMPORARY ***************** CREATE TABLESPACE TEMP_DATA DATAFILE '/dev/rlvispbtemp' SIZE 31999K REUSE
You have to compare the size of /dev/rlvispbtemp with the size of temp.
DEFAULT STORAGE ( INITIAL 256K NEXT 256K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY; ALTER DATABASE DATAFILE '/dev/rlvispbtemp' AUTOEXTEND ON; REM ************** TABLESPACE FOR USER ********************* CREATE TABLESPACE USER_DATA DATAFILE '/dev/rlvispbuser' SIZE 5M REUSE DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE '/dev/rlvispbuser' AUTOEXTEND ON; REM ************** TABLESPACE FOR INDEX ********************* CREATE TABLESPACE ISPB_INDEX DATAFILE '/dev/rlvispbindex' SIZE 95999K REUSE
You have to compare the size of /dev/rlvispbindex with the size of index.
DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE '/dev/rlvispbindex' AUTOEXTEND ON; REM ************** TABLESPACE FOR DATA ********************* CREATE TABLESPACE ISPB_DATA DATAFILE '/dev/rlvispbdata' SIZE 127999K REUSE
36
You have to compare the size of /dev/rlvispbdata with the size of data.
DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE '/dev/rlvispbdata' AUTOEXTEND ON; REM **** Creating four rollback segments **************** CREATE ROLLBACK SEGMENT r01 TABLESPACE RBS1; CREATE ROLLBACK SEGMENT r02 TABLESPACE RBS2; CREATE ROLLBACK SEGMENT r03 TABLESPACE RBS1; CREATE ROLLBACK SEGMENT r04 TABLESPACE RBS2; ALTER ROLLBACK SEGMENT r01 ONLINE; ALTER ROLLBACK SEGMENT r02 ONLINE; ALTER ROLLBACK SEGMENT r03 ONLINE; ALTER ROLLBACK SEGMENT r04 ONLINE; ALTER ROLLBACK SEGMENT r0 OFFLINE; DROP ROLLBACK SEGMENT r0; REM **** SYS and SYSTEM users **************** alter user sys temporary tablespace TEMP_DATA; alter user system temporary tablespace TEMP_DATA; disconnect exit
EOF
22.Enter Y to run the script and create the logical volumes. Details of the run are available by entering: tail -f /usr/TivTSM/install/db/oracle/./sqlispb.log. 23.Use the following steps for the schema creation script: Press Enter to accept the default single value between parenthesis, or type a new value and press Enter. - Enter the password for the db user system manager.
Note You may accept the defaults for the remaining steps if you used ispb as the database instance. - Enter stage_master as schema owner. - Enter stage_user as schema user. - Enter en as default local
37
- e value. - Enter Y to create the schema. - The install will load tables and check results. - If you will use Device Manager, enter Y to include the Device Schema. - Enter Y to load the zip code table. - Enter Y to configure LDAP Integration. - Enter Y to configure eBill. - Enter Y to configure Web Hosting. 24.At this point the installation is complete. You may review the logs in the following directories: - /usr/TivTSM/install/db/oracle/ - /db/app/oracle/products/8.1.5/schemas/ispb - /tmp/OrasoftInst.log.
38
SuiteSpot Group [nobody]: netscape Are you using an LDAP-based directory server? [n] n
After all prompts, press Enter to copy the software. When prompted provide the following information: Administration port [6557]: 11043
Run Administration Server as [root]:root Enter path to 2.x version of Netscape Administration Server root:
Perform the following steps to allow remote access to Netscape server: Stop the admin server by typing the command
/usr/netscape/suitespot/stop-admin
Type cd /usr/netscape/suitespot/admin-serv/config In a text editor, open ns-admin.conf. Change Hosts X.X.X.X to Hosts * Change Addresses X.X.X.X to Addresses * Start the admin server by typing the following command:
/usr/netscape/suitespot/start-admin
39
2. Press Create New Netscape Enterprise Server 3.63. 3. Fill in form using the table below for each server instance. The following sections show you examples of filling out the form for each server instance. - When you create the Enrollment Server, follow the additional steps described in the example for Enrollment Server - Server Name field is the name of the server where you have installed Netscape (host.domain). - Take the default value for Bind address, Server User, MTA Host, NNTP Host. - Verify that the Never attempt to resolve IP addresses into hostnames radio button is selected. Confirm that the server port, server identifier,
40
and primary document directory values are set in the form as in Table 2.
Table 2. Netscape Enterprise Servers
Server component Authentication Insecure Customer Care Subscriber Self-Care System Management Tools Personalization Premium Enrollment1 SDP Servlet Web Content Hosting
Server port 8080 14080 15080 9080 16080 10080 18080 8090 12080
Server identifier authserv custcare selfcare sysmgmt personal premium enroll sdp wch
Primary document directory /usr/TivTSM/authentication/conte nt /usr/TivTSM/custcare/content /usr/TivTSM/selfcare/content /usr/TivTSM/sysmgmt/content /usr/TivTSM/personal/content /usr/TivTSM/premium/content /usr/TivTSM/enroll/content /usr/TivTSM/sdp/content /usr/TivTSM/wch/content
41
42
43
44
45
46
47
1. After you create the Enrollment Server, click on the enroll server button to configure the server. 2. Click Programs, then click CGI Directory (see Figure 17 on page 49).
48
3. Type cgi-bin on the URL prefix line. 4. Type /usr/TivTSM/enroll/cgi-bin on the CGI directory line. 5. When you see a warning that the directory does not exist, click OK. 6. Save. 7. Apply. 8. Click OK. 9. Click admin.
49
50
51
52
Specify the type of installation (Figure 21). Select Custom Installation from the list.
53
The next dialog box (Figure 22) asks you to select the application server components that you want to install.
The installation will ask you to select the Web Server on which WebSphere will run (Figure 23 on page 55). Select the appropriate Web server plug-ins on the right. If your Web server has a later version than those listed in the dialog box, choose the latest plug-in version available.
54
Specify the location of your Web server configuration file (Figure 24). For Netscape Server, the file is obj.conf; for Apache or IBM HTTP Server, the file is httpd.conf.
55
The next dialog box (Figure 25) asks you to indicate the type of the database you would like to use. For our purposes, choose InstantDB.
Now, enter the security information (Figure 26). The user is the user that WebSphere is going to run under. Use the dummy key ring file.
56
Specify a directory to install the WebSphere (Figure 27). This directory will be the WebSphere Application Server root directory.
The installation program will take some time to install files into your system. After it finishes, the last dialog box will allow you to read the readme.txt file or click Finish to complete the installation. At that point, the Websphere Application server is ready.
57
command:
./install.ksh
This will bring up the install welcome panel as shown in Figure 28.
Choose Next to continue. You will then be asked which database you will be using. Select the proper database and click on Next as shown in Figure 29 on page 59.
58
It is interesting that we are prompted for the database because we are installing from the TPSM/Oracle CD. It appears that in the future, this will allow both DB2 and Oracle support to be shipped on one CD instead of two. Selecting Next will bring up the next dialog (Figure 30 on page 60) where you will be prompted for the local machine information. DNS domain resolution is a requirement.
59
Fill in the information and select Next to bring up the next dialog as shown in Figure 31 on page 61.
60
While the ITSO did an initial install on itso14.dev.tivoli.com, this screen capture was done on a separate machine, knight1. This is the reason for the discrepancy in hostnames on our dialog boxes. No information was changed on this dialog. Selecting Next opened the next dialog as shown in Figure 32 on page 62. If you have a Radius server already installed, you can unselect the internal TISM Radius server.
61
You will notice that Systems Management and Authentication is greyed out. This is because the installation of these components are required. Select Next to bring up a prerequisite checklist dialog as shown in Figure 33 on page 63.
62
Selecting Next will bring up the dialog to ask you where the prerequisites have been installed as shown in Figure 34 on page 64. Update the dialog with any changes from the application defaults.
63
Select Next to open the verification dialog as shown in Figure 35 on page 65.
64
You can scroll up/down the information that you have chosen from the previous panels. When you have verified that it is correct select Next to start the install. While it is installing this version of the install code does not display a status window. While the install document tells us to look at /installdir/TivTSM/install/tisminstall.log, that file is not written until the installation is complete or fails. You cannot tail the file to check the status of the installation. After the installation has completed a dialog will open as shown in Figure 36 on page 66.
65
2. For starting and stopping the Netscape services, we created a rc.webservers file in the /etc filesystem. Our file looks like this:
66
3. In the Netscape server administration console, http://hostname:port, select each Netscape server instance and select Apply to load manual file changes. 4. Stop all the Netscape servers:
/etc/rc.webservers stop
4.6.1.2 IBM WebSphere Application Server configuration This section shows you the steps to configure the Application Servers. 1. Change directory to /usr/WebSphere/AppServer/bin. 2. In a text editor, open was.prp. and change traceLevel=0 to traceLevel=4 to avoid a huge log file. 3. Enter ./startupServer.sh to start the WebSphere. 4. Enter tail -f ../logs/tracefile. Wait for an Open for e-business message. To create all the application servers for TISM, follow the next steps: 5. Enter ./setupCmdLine.sh 6. Enter ./XMLConfig.sh -adminNodeName nodename -import SMAPPV11ora.xml. 7. Ignore the following warning messages during the import process
Failed to find Servlet Creating Servlet : xxxxxxxxxxxx, since it was not found for update.
8. Backup the InstantDB database: - Change directory to usr/WebSphere/AppServer/bin and issue tar -cvf ./idbstore.tar ./idbStore. - Enter ./XMLConfig.sh -adminNodeName node name -export nodename.xml Now we can start the Admin Console (Figure 37 on page 68) to verify the creation of the application servers. Go to the /usr/WebSphere/AppServer and issue ./adminclient.sh&. Ignore the following warning messages:
67
[00.11.15 15:59:11:457 CST] bbe7e34f IExtendedSecu A 2000.11.15 15:59:11.457 SecurityConfiguration reportVerificationAnalysis IBM WebSphere Security The security service will not be disabled during bootstrap activation.
Now we start up all the application servers. Just click on the Application Server to be started and then click on Start. You should see a completed message as shown in Figure 38 on page 69.
68
Start console with the command console.bat, which will open a dialog box where you have to give Administrator login and password. See Figure 40 on page 74. After filling in the username and password, the Administration Console appears as shown in Figure 41 on page 74.
69
70
4.8.1 Oracle
Switch to the oracle software owner, in our case oracle8:
su - oracle8
[# ps -ef|grep Trans root 9024 18256 0 Nov 10 - 5:17 /usr/java_dev2/jre/sh/../bin/java com.tivoli.tsm.tx.TransactionImp root 21396 20432 0 Nov 10 - 8:33 /usr/java_dev2/jre/sh/../bin/java com.tivoli.tsm.tx.TransactionImp root 36504 13136 0 15:39:18 pts/4 0:00 grep Trans #
71
72
73
2. Download console.zip to your hard disk. 3. Unzip the file to a known location. 4. Edit the unzipped Transaction.properties, TransactionURL variable. It should match the hostname and port of the machine where the console RMI server is running. For instance:
//itso14.dev.tivoli.com:2001/Transaction
5. Open a DOS Windows and cd (change directory) to the directory where you unzipped. Type console.bat to start the TISM Administration Console. 6. It will open a dialog box where you must give the Administrator login and password (Figure 40).
7. The TISM Administration Console will open. 8. Double-click the Registration configuration folder (Figure 41).
A wide variety of configuration options are available to the ISP. The following section provides an overview of the enrollment configuration objects: Realms
74
Registration names Access codes Deals Deal text Enrollment metrics The enrollment configuration objects have a structure. This structure is required to create the enrollment object as shown in Figure 42.
A realm needs a registration name to be able to enroll new users. A registration name requires an access code to be able to work. For marketing purposes, we have deals and each deal has a deal text, which explains the deal, for example, a deal, FREE, could have as deal text, you dont have to pay anything. But if you have to pay something, you have a list of payment methods.
75
For a deal, you can set a number of properties. The access code is related with the deals. Depending on the access code, the ISP could offer different deals, for instance, the old customers could be offered a free access. Due to that the deals are not going to be always free, you have to related what methods of payment you permit.
Figure 43. Press the right mouse button and select Add
2. Enter the following fields as shown in Figure 44 on page 77: - Realm Name: A name for the realm. - Realm Description: Optional text describing the realm - Default Domain: The E-mail domain for the realm.
76
77
Value Registration Name Description Password Registration Authorization Attributes Member Authorization Attributes Registration Type Access Code Required
Description The username of this Registration Name. Optional 40 character text description The password for this Registration Name. The set of NAS filters to be invoked during the time this Registration Name is logged on (for example, filters that force subscribers to stay in the registration subnet and not be able to surf the web). NAS attributes to be set for subscribers who register using this Registration Name (for example, the attributes for the new subscriber for all subsequent sessions after registration). Generic, or Multiple Access Code Only meaningful for Multiple Access Registration Names. Y= Access Code is required (if not provided, registration is terminated). N= Access Code is optional (if not provided, registration proceeds, using the DEFAULT Access Code). Determines if the subscriber, when created, will be considered business or consumer. Drop-down selection list that comes from the sales channel folder of available sales channels. Account type used on the subscriber's account when it is created.
An example of creation of Registration Name is shown in Figure 45 on page 79. 1. Select the new realm, ITSOCHANNEL. 2. Press the right mouse button and select Add 3. An example of dialog is:
78
79
Name. The Access Code allows the Service Provider to track the sales channel used to acquire subscribers. An important aspect of Access code is that each one has its own set of billing deals, thus enabling the generation of many different deals and registration scenarios without having to build a new software kit for each new promotion. As noted before, a registration name can be one of two types; generic or multiple access. The first one uses the DEFAULT access code, so it doesnt deal with access codes. The second one requires an access code from the registering subscriber, although it could have also the DEFAULT access code. If a Multiple-Access Registration Name is driving a particular registration, then the run-time registration code asks the access code, which is usually provided in the software kit. If the access code given by the user is correct, the registration flow continues as it was established in the attributes. If the access code entered is incorrect, the user would be asked again. If the access code is incorrect again, one of two things can happen depending on whether the access code is required or not. If it is not required, the registration will go on. If the access code is required, the registration flow will be halted. This is shown in Figure 46 on page 81.
80
An example of creation of access code: 1. Select the new registration name, USER_FOR_ENROLL 2. Press the right mouse button and select Add -> Access Code 3. The dialog box shown in Figure 47 on page 82 appears:
81
Figure 48. Deal examples offered to the user in the enrollment process
A deal may have any number of properties. These can be used to associate various parameters with a deal, which at registration time become associated with the subscribers account. If no deals are found for a given Registration Name-Access code combination, the registration fails.
82
Field Deal
Description The deal name is also the Billing System Product Code. The name links the deal with a billing plan in the billing system. Text description of the deal. This description is not seen by the user. 1-5 characters. Required. Future use. Name of the DEAL TEXT that you want to relate with the deal Name of the Method of Payment List that we relate with this deal For each property presented, select the desired value from the pull-down that applies. (As a convenience, the default value is always the first one)
An example of the creation of a deal is: 1. Select the deal folder and click the right mouse button. 2. Select Add. 3. The dialog box shown in Figure 49 on page 84 will appear.
83
4. A new dialog box appears to create new deal text or set the default text.
Description ID for the deal text Short deal description. Its usually used in the radio buttons. Long description of the deal. This is optional. Numeric value used in descending order to set how they are listed on the screen.
84
At this point, you have two choices: a. Select the default one by pressing Cancel. b. Create new deal text: 1. The dialog box in Figure 50 will appear, and you have to write the fields as you decide to set. 2. Press Add when you finish
3. A dialog box to set the properties will appear. 5.1.5.1 Setting the properties for a deal To set the properties in the deal, you have to set the values in the dialog box shown in Figure 51 on page 86.
85
When completed, select Add. In the TISM Administrator Console you will now see the deal that you added (Figure 52 on page 87).
86
Now you have to relate the deals with the Realms, which is described in Section 5.1.7, Associating the deals with the Realm on page 90
Description Name of the property Domain of the property Description of the property Component that sets property values; for instance, PIDEAL, so the property is going to be defined as a deal level in the registration configuration folder. For more information, check the Data Dictionary documentation
87
Description Unit of measure for property values; for instance, MegaBytes Default setting for property; for instance, 1, 0, 2, None Determines the type of values the properties have. This value determines the sort order of the Setting Folder for the property. Currently, there is no type checking when new setting values are added to a property. They may be one of the following: - Number -Character - Date
The Director Tool has a few defaults. You can also add your own. 5.1.6.1 Creating a new property To add a new property, follow these steps as shown in Figure 53: 1. Select the Registration Values Folder in the TISM Administrator Console. 2. Select the Properties Folder. 3. Select the Action Menu, and select Add -> Property to bring up a dialog box as shown in Figure 54 on page 89.
88
4. Fill in the dialog with your property information and select Add. The new property is now visible in the Properties table. 5. After this you can set values to this property. a. Select, in the table of properties, the property that you want to add possible values to. b. Select Action Menu c. Select Add -> Setting d. A dialog box as shown in Figure 55 on page 90 will appear where you write the new value.
89
90
3. Select the deal in the top table that you want to associate with a Realm, then select the Realm(s) in the lower right window that will offer this deal, for example, IBM and ITSOCHANNEL. See Figure 57 on page 92 to see the deal and Realms associated.
91
92
Value ID Description
Description ID for Sales Channel Text description about the Sales Channel
To create a sales channel: 1. Select the Sales Channel folder in the Registration Configuration folder of the Administrative Console. 2. Select Action Menu. 3. Select Add. 4. A new dialog box will appear as shown in Figure 59 on page 94.
93
The new Sales Channel will now show up in the Administrator Console (Figure 60).
When you create a new Access Code, you would have the choice of selecting the new Sales Channel as shown in Figure 61 on page 95.
94
Figure 61. Example of selection of created Sales Channel in the new Access Code
Value Type
Description There are three primitive Method of Payment types: - Paper - For paper invoice creation - Credit - Credit card - Telco - Add to phone bill It could be any letter Description of the new method
Subtype Description
Here is an example about how to create a payment method: 1. Select the Payment Method folder in the Registration values folder. 2. Either right click on the folder or choose the Action menu.
95
3. Select Add. A new dialog box will be displayed as shown in Figure 62.
96
4. Now you have to add the Payment Methods that you want contained in the MOP list. Select the MOP List in the table that appears in the middle of Figure 64.
5. Select the Method of Payment we want to include in the MOP list in the right hand-side of the table as shown in Figure 65 on page 98.
97
98
3. Select the MOP list that you want to set for the deal.
99
The enroll process begins in the URL: http://hostname:18080/enroll.html This will bring up the enrollment home page as shown in Figure 67.
This page sets the Realm that the user is going to be enrolled in, and the Registration Name that we want to use for the enrollment process, in this case ITSOCHANNEL as Realm and USER_FOR_ENROLL as Registration Name. The following screen shows the code associated with this page:
100
<!DOCTYPE HTML PUBLIC "-//W3C//DTC HTML 4.0//EN"> <META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=iso-8859-1"> <HTML> <HEAD> <TITLE>Welcome to ISP</TITLE> </HEAD> <BODY BGCOLOR="Teal" TEXT="white"> <CENTER> <TABLE WIDTH=370 CELLSPACING=0 BORDER=0> <TR><TD> </TD></TR> <TR><TD WIDTH=201> <CENTER><IMG SRC="../../art/reg000.gif" WIDTH=578 HEIGHT=52 BORDER=0 ALT="Subscriber System Registration"> </CENTER> </TD> </TR> </TABLE> <TABLE> <TR><TD> </TD></TR> <TR><TD> </TD></TR> </TABLE> <TABLE> <TR><TD> <FONT SIZE=6> <CENTER>Welcome !!</CENTER></FONT><BR></TD></TR> <TR><TD> </TD></TR> <TR><TD> <CENTER><FONT SIZE=5>Here's an opportunity to join the fastest growing ISP !!</FONT></CENTER><BR> <BR></TD></TR> <TR></TR> <TR><TD> </TD></TR> <TR><TD> <CENTER><FONT SIZE=15> <FORM METHOD="POST" ACTION="/enroll/EnrollServlet"> <INPUT TYPE="HIDDEN" NAME="RegName" VALUE="USER_FOR_ENROLLMENT"> <INPUT TYPE="HIDDEN" NAME="RealmName" VALUE="ITSOCHANNEL"> <INPUT TYPE="SUBMIT" NAME="" VALUE="ENROLL NOW"> </FORM> </FONT> </CENTER> </TD></TR> </TABLE> </CENTER> </BODY> </HTML>
These changes create the new REALM. Once you press ENROLL NOW, you pass to the next window (Figure 68 on page 102), which prompts the user for an access code. We have two; PUBLIC and CHEAP. In this example we will enroll with both to show the differences due to the different configuration.
101
102
The enrollment details window appears. This is divided into Personal details (Figure 70) and deals/Username (Figure 71 on page 104).
103
At this point the customer can choose the password for accessing the new account as shown in Figure 72.
Next, TPSM gives details about the deal that the user chooses as shown in Figure 73 on page 105.
104
Access information and a choice for method of payment is shown (see Figure 74).
105
The enrolling person is given a chance to confirm all the information that had been entered (see Figure 75).
106
Selecting Continue on Figure 76 on page 106 will bring up Figure 77, which provides additional information for configuring your machine to access the service.
Now we are going to see what happens when we use the CHEAP access code in the screen shown as Figure 68 on page 102 to enroll a new user. First we go to the enroll main page (Figure 67 on page 100) and proceed to enroll a new one following the steps that we mentioned earlier in this chapter; see Figure 68 on page 102 through Figure 77. On the screen that asks us to choose the deal, we select the second option as shown in Figure 78 on page 108.
107
As you can see, there are two deals. These deals are those we set for CHEAP access code. After we choose the deal, the enrollment procedure continues as described on the prior pages.
108
The content directory contains the JSPs. Their names and functions are described in Table 9:
Table 9. JSPs for enroll
Description Ask the access code If the access code is not correct, it would ask the access code again If the user dont give the birth date, It would ask if you are 18 or over If you cancel the registration, it would send you to this JSP After registering, the user could download the configuration to your PC Shows the user details about the registration It gives the user the congratulations, when it finishes
109
JSP file debug dontGo enroll mopCombined paymentPlan userNameInvalid personalCombined agreement
Description Not used If the user presses cancel Controls the flow of the enrollment Shows the Payment Details to be confirmed by the user Shows the Deal Details to be confirmed by the user If the user chooses a ID that is used already The form with all the personal details Shows the terms of agreement
For the servlet directory, we have the configuration files. In Table 10, we are going to explain what who they are and they do.
Table 10. Property files for enroll
Description Variables with messages for the user JDBC configuration for Oracle Variable format to validate the data that the user introduces It has the error page where if something wrong happens go General configuration file
110
1. A user attempts to access a portal page and is intercepted by the authentication checker 1. 2. The user has never access the portal page before and therefore is not authenticated. The user is redirected to the Authentication Server.
1
The Authentication Checker is a component of the Portal Toolkit (pTk) that recognizes the type of device.
111
3. The authentication server prompts the user for a username and password in order to validate them. The other possibility is the authentication server verifies the IP address given to the user at sign-on with the Radius server. 4. User enters the appropriate information if prompted. The Authentication Server validates that he or she is an authorized user, and stores information in the TISM database. 5. The user is authenticated and redirected back to the portal page. Now the checker acknowledges the users authentication and permits them to enter the site. 6. A user session is opened that contains all the profiling information stored in the database. As you know, TPSM supports multiple types of devices. Depending on the type, its necessary to change the configuration. There are mainly two types of devices; the internet browsers, such as Microsoft Internet Explorer and Netscape, and the wireless browsers such as mobile telephones and PDAs. Because these are handled very differently, this chapter is divided into two sections.
112
Multi-Domain Mode Single Sign On (cookie) Stage 1: by IP address in IP header Stage 1: by IP address in HTTP header Stage 1: by Username or MSISDN in HTTP header Stage 1: no Stage 2: Form Stage 2: Basic HTTP External Partners Premium Content Servers Session load balancing Assumption: Yes Yes Yes Yes Yes Yes Yes Yes Yes Checker does not need connectivity to DB
Single-Domain Mode No Yes Yes Yes Yes No Yes No Yes Checker needs connectivity to DB
113
Authentication Checker that determines the type of device attempting to access the server. This information is read from the user- agent, at which point the Authentication Checker searches for the proper configuration file to display information for that devices needs, and to decide what type of authentication it needs, such as HTML or WAP. The authentication server for the Internet World uses cookies. It creates a JavaBeans session when the user signs on to access authentication information. There are some pTK commands that can use the session to gather authentication information. You should be able to work for internet access, so if you write in the browser the next URL http://hostname:8080/authentication/server, it will bring up a dialog as shown in Figure 81.
The structure of this page can be changed. Section 6.3.1, Structure of Authentication Server on page 114 has a complete guide to configuring this page.
114
Figure 82. Active components of the Authentication Server for internet access
The authentication file system is divided in two: 1. Content, where the structure of the page is located. 2. Servlet, where the configuration files and Java code for the authentication server is. The content file system has different parts, as you see in Figure 82: a. css contains the default style sheet for the authentication server. b. en contains the English JSPs. c. images contains all the pictures files for the authentication server. d. ja contains all the Japanese JSPs. The JSP used for internet access is authentication.jsp, and as you can see in the next screen it is a form with a Java Bean that creates a session with the information passes.
115
The bolded lines are the important code for authentication.jsp. As you can see at the beginning, we have the Java code for importing the classes and creating the Java Bean for authentication. In the second part of the code, we have the form with the auth JavaBeans methods for verifying the authentication in the server and the redirection to the page where the authentication was requested from.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page import="java.util.*,java.text.*" %> <jsp:useBean id="auth" class="com.tivoli.tsm.authentication.AuthFormBean" scope="request" /> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <TITLE> TSM Authentication Page </TITLE> <LINK rel="stylesheet" href="/css/default.css" type="text/css"> </head> <BODY text="#000000" bgcolor="#FFFFFF" link="#000000" vlink="#000000" alink="#000000"> <TABLE border="0" cellspacing="0" cellpadding="0" > <TR> <TD><A href="http://www.tivoli.com"><IMG src="/images/tivoli_logo.gif" ALT="Tivoli" border="0" ></A></TD> <TD ><IMG width="1000" height="50" src="/images/spacer.gif" ></TD> </TR> <TR><TD> </TD><TD> </TD></TR> </TABLE> <TABLE border="0" cellspacing="0" cellpadding="0" width="100%"> <TR> <TD valign="top" align="left"> <TABLE border="0" cellspacing="0" cellpadding="0" width="250"> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Personalize</b></font></TD></TR> <TR><TD ><A href="/perso/home">My Portal</A></TD></TR> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Shopping</b></font></TD></TR> <TR><TD ><a href="http://www.gap.com/onlinestore/gap/default.htm">GAP</a></TD></TR> <TR><TD ><a href="http://www.laredoute.fr">La Redoute</a></TD></TR> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Books</b></font></TD></TR> <TR><TD ><a href="http://www.amazon.com">Amazon</a></TD></TR> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Auction</b></font></TD></TR> <TR><TD ><a href="http://www.ibazar.com">iBazar</a></TD></TR> <TR><TD ><a href="http://www.aucland.com">Aucland</a></TD></TR> <TR><TD > </TD></TR> <TR><TD > </TD></TR> <TR ><TD height="200"> </TD></TR> </TABLE> </TD> <TD valign="top" align="left" > <TABLE border="0" cellspacing="5" cellpadding="0"> <tr><td colspan="2" align="center"><IMG src="/images/ibmbanner.gif"></td></tr> <tr><td> </td></tr>
116
<tr bgcolor="#6666CC"><td align="center" colspan="2"><H2><font color="#FFFFFF">Please log-in...</font></H2></td></tr> <tr bgcolor="#FFFFFF"> </td></tr> <TR><TD valign="top" align="center" > <FORM action="<%= auth.getAuthenticationServerURL() %>" method="get"> <TABLE border="1" cellspacing="1" cellpadding="0" bgcolor="#EEEEEE"> <TR> <TD align=left> Your User Name </TD> <TD align=left><INPUT type="text" name="SMSusername" value="<%= auth.getUserName() %>" size="20" maxlength="30"></TD> <TD align=left> </TD> </TR> <TR> <TD align=left> Your Password </TD> <TD align=left><INPUT type="password" name="SMSpassword" value="" size="20" maxlength="30"></TD> <TD align=right><INPUT type="submit" name="SMSsubmit" value="GO" enctype="application/html-form-urlencoded"></TD> </TR> </TABLE> <INPUT <INPUT <INPUT <INPUT type="hidden" type="hidden" type="hidden" type="hidden" name="SMSkey" name="SMSrealm" name="SMSurl" name="SMStiers" value="<%=auth.getKeyIndex()%>"><P> value="<%=auth.getRealm()%>"><P> value="<%=auth.getComeBackURL()%>"><P> value="<%=auth.getTierList()%>"><P>
The servlet file system contains the configuration files for the servlets and the Java code (jar files). The important files for internet access are: Authentication.properties (Section 6.3.1.1, Authenticator.properties on page 118) DBPool.properties (Section 6.3.1.2, DBPool.properties on page 121) DefaultAuthenticator.properties (Section 6.3.1.3, DefaultAuthenticator.properties on page 122) IE.properties (Section 6.3.1.4, IE.properties on page 131) Nav4.properties (Section 6.3.1.5, Nav4.properties on page 131) We are going to explain how each of them works.
117
The authentication system of TPSM uses a server-side plug-in architecture. Two plug-ins are delivered with TPSM. One of them is for browsers: DefaultAuthenticator.properties for Web Browsers Its possible to adapt this plug-in to the environment where it is going to be used. The Authentication Checker and Authentication Server both use it. The other is Authenticator.properties. 6.3.1.1 Authenticator.properties The Authenticator.properties file defines the authentication plug-ins that are loaded when the application server starts. It specifies a property file for each authenticator. This is the code used for internet access:
def.authenticator.class=com.tivoli.tsm.authentication.DefaultAuthenticator def.authenticator.properties=com.tivoli.tsm.authentication.DefaultAuthenti cator
As you realize, the second part of the assignment is the directory and file. The file also specifies the different types of devices, their HTTP signatures, and their associated Authentication plug-ins. The following is an example and definition for browsers.
# IE 4/5 Web browser ie.device.signature.user-agent=MSIE ie.device.properties=properties.com.tivoli.tsm.authentication.IE ie.device.authenticator=def # Netscape Navigator 4 Web browser nav.device.signature.user-agent=Mozilla nav.device.properties=properties.com.tivoli.tsm.authentication.Nav4 nav.device.authenticator=def
Imagine that a new browser appears and you need to configure for TPSM. You have to get the user agent that it uses, in these cases, MSIE and Mozilla. You then must create a new configuration file. The default files should have been configured for Microsoft Explorer and Netscape as shown in Section 6.3.1.4, IE.properties on page 131 and Section 6.3.1.5, Nav4.properties on page 131. Because its going to use the DefaultAuthenticator.properties because its not a wireless device, define it as authenticator def. The file also specifies the path used to log the authentication tickets delivery:
authentication.log.name=/var/adm/logs/authentication.log
118
When the authentication is delegated to the WES authentication proxy, the Authenticator.properties file must be replaced by the Authentication.properties.wes. This change must be done at the end of installation, before application servers start. The following screen is the Authenticator.properties file.
119
###################################################################### # TSM Authentication properties # This file is used by the class com.tivoli.tsm.Server # This file lists # - the different authenticators and their property file # - the different devices and their signature # - the TSM database connection pool properties ###################################################################### # List of authenticators # ---------------------# The syntax is : # <authenticator index>.authenticator.class=<classname> # <authenticator index>.authenticator.properties=<authenticator properties name> # ###################################################################### # Default Authenticator is good for every WEB devices with a reasonable HTTP support # It also supports Premium content access control ###################################################################### # def.authenticator.class=com.tivoli.tsm.authentication.DefaultAuthenticator def.authenticator.properties=properties.com.tivoli.tsm.authentication.DefaultAuthen ticator # ###################################################################### # WAP Authenticator can work with IBM and Nokia WAP gateway # It may work too with Ericsson gateway (requires some tuning) ###################################################################### wap.authenticator.class=com.tivoli.tsm.authentication.WapAuthenticator wap.authenticator.properties=properties.com.tivoli.tsm.authentication.WapAuthentica tor # ###################################################################### # List of devices # --------------# The syntax is : # <device index>.device.signature.<HTTP header name>=<HTTP header string> # <device index>.device.properties=<device profile properties name> # <device index>.device.authenticator=<authenticator index> # ###################################################################### # # Devices definition for TISM w/o WES # ###################################################################### # WAP gateway 7110.device.signature.user-agent=Nokia7110/1.0 7110.device.properties=properties.com.tivoli.tsm.authentication.Nokia7110WapDevice 7110.device.authenticator=wap # WAP gateway R320.device.signature.user-agent=R320 R320.device.properties=properties.com.tivoli.tsm.authentication.R320WapDevice R320.device.authenticator=wap # WAP gateway
120
R380.device.signature.user-agent=R380 R380.device.properties=properties.com.tivoli.tsm.authentication.R380WapDevice R380.device.authenticator=wap # WAP gateway nokiaemul.device.signature.user-agent=Nokia nokiaemul.device.properties=properties.com.tivoli.tsm.authentication.NokiaEmulWapDe vice nokiaemul.device.authenticator=wap # IE 4/5 Web browser ie.device.signature.user-agent=MSIE ie.device.properties=properties.com.tivoli.tsm.authentication.IE ie.device.authenticator=def # Netscape Navigator 4 Web browser nav.device.signature.user-agent=Mozilla nav.device.properties=properties.com.tivoli.tsm.authentication.Nav4 nav.device.authenticator=def # Default Web browser default.device.signature.user-agent= default.device.properties=properties.com.tivoli.tsm.authentication.DefaultDevice default.device.authenticator=def # ###################################################################### # Authentication log file path ###################################################################### # authentication.log.name=/var/adm/logs/authentication.log
6.3.1.2 DBPool.properties DBPool.properties is used by the authentication server and pTk. It specifies the connection to the TISM database. These are the standard JDBC parameters:
JDBC.dbDriver=oracle.jdbc.driver.OracleDriver
This is the user and password to connect to TISM database. The following parameters tune the JDBC Connection pool used by the authentication and pTk.
MaxDBConnections=5 MinDBConnections=2
121
###################################################################### # database connection management parameters ###################################################################### # For Oracle RDBM # JDBC driver name JDBC.dbDriver=oracle.jdbc.driver.OracleDriver # # RDBM server JDBC URL JDBC.dbConnect=jdbc:oracle:thin:@itso14.dev.tivoli.com:1521:ispb # ###################################################################### # For DB2 RDBM # JDBC.dbDriver=COM.ibm.db2.jdbc.net.DB2Driver # JDBC.dbConnect=jdbc:db2://kriek.lagaude.ibm.com:1521/ispb # ###################################################################### # RDBM user name JDBC.dbUser=stage_master # JDBC.dbUser=stage_user # # RDBM user password JDBC.dbPassword=oracle # # Connection pool parameters MaxDBConnections=5 MinDBConnections=2 # ###################################################################### # TISM DB level : # It is used to provide compatibility with DB from TSM 2.x to TISM 1.1 # 2.1 | 3.0BETA | 3.0 | 4.0 # 3.0 = TISM 1.0 # 4.0 = TISM 1.1 ###################################################################### tsm.level=4.0
When this parameter is yes, the multi-domain mode is enabled. This means that a central authentication server is used, and users who are not authenticated are redirected to it. This is the most powerful authentication mode that can be used when applications host in different domains and share a central authentication server. For more information, see Figure 6.2, Authentication modes on page 113.
122
In multi-domain mode, the following parameter specifies the URL of the authentication server (not including the URL path).
authentication.server.url=http://hostname:8080
In multi-domain mode, the following parameter specifies the URL path of the authentication server.
authentication.form.path=/authentication/en/authentication.jsp
The next parameters define the type of authentication stage. For more information, see Figure 6.1, Authentication stages on page 112.
authentication.type1=ip|username|no authentication.type1.header=ip|<HTTP header name>
The first parameter defines the type of authentication for stage 1. If no value is specified, it uses authentication stage 2 only. If the value IP is specified, it tries to identity a dial-up user by their IP Address in the Radius Active Session Table. If the value username is used, it searches for that username in the specified HTTP Header. The syntax of the username cannot be username or username@realm. The second parameter specifies the header name where the IP address of the username must be fetched. IP means the IP address contained within the original IP header. The following parameter specifies the type of authentication for stage 2; by a HTML (or WML) form, or by a basic HTTP authentication.
authentication.type2=basic|form
The next parameter covers Single Sign-On Cookies. For more information, see Figure 6.2, Authentication modes on page 113.
authentication.sso.enabled=yes|no
If this parameter is set to yes, the central authentication server sets a Single Sign-On Cookie to avoid prompting the user for several successive authentications. An SSO Cookie only works in multi-domain mode.
123
The above parameters specifies the Single Sign On Cookie. A negative maxage means a session cookie (lost when the browser is stopped). If the cookie is encrypted, a key number (from 1 to 32) must be specified. The next parameter specify the default URL after the authentication. This is not typically used.
authentication.openurl=http://www.afterauthentication.com
If the user logs off, the next parameter specifies where the user goes.
authentication.logout.url=http://www.whenlogout.com
If the user doesnt pass a Realm, the next parameter specifies the default one he or she will be assigned to.
authentication.default.realm=IBM
These parameters must be un-commented when a cluster configuration is used, such as a configuration with an eND with several portal servers in parallel. This enables TISM session level load balancing as shown in Figure 83 on page 125.
124
On the authentication checker side, the Webmaster must specify the list of premium services ids hosted by a thin server, and provide a list of URL paths prefixes for each of them as shown in Figure 84.
125
This parameter specifies the URL where a non authorized user is sent when he or she tries to attend to a premium server.
premium.accessrejected.url=http://hostname:1080/premium/auth.html
The authentication profiler class specifies an optional profiler class that can be used by the Webmaster to write dynamic profiling rules. Profiling rules are invoked at each user session start to dynamically add additional properties to that user. It can be used to specify targeting rules for promotions, to count user sessions, to make statistics, etc.
authentication.profile.class=<profile class name>
126
###################################################################### # TSM DefaultAuthenticator properties ###################################################################### # ###################################################################### # Multi-domain or Single-Domain authentication # # - Multi-domain : allows Single Sign-On (SSO) on several # domains, including domains hosted by tiers (premium content) # It requires that devices supports HTTP redirect properly # # - Single-domain : allows SSO on a single ISP domain # It does not use HTTP redirect since the authenticaiton is done # directly in the Checkers. # So it is faster, and good for dummy devices (I won't give name here ;-) # It has limited functions : no SSO, # authentication.type2=basic is forced # It can be a good solution to work with WES authentication proxy # or Tivoli Policy director. # # Multi-domain is the default, allowed values : yes | no ###################################################################### authentication.multidomain.enabled=yes # ###################################################################### # authentication server URL : http://hostName:port ###################################################################### # authentication.server.url=http://thklamberton.lagaude.ibm.com authentication.server.url=http://itso14.dev.tivoli.com:8080 # ###################################################################### # authentication server path ###################################################################### authentication.server.uri=/authentication/server # ###################################################################### # authentication form file path ###################################################################### authentication.form.path=/authentication/en/authentication.jsp # ###################################################################### # 1st authentication type (w/o login/pwd prompting) : # authentication.type1 = ip | username | no # # it must also specify the packet header which contains that information : # authentication.type1.header = ip | <any HTTP header name> # # if authentication.type1=username is used take care of the other property : # authentication.force.username which forces a test username # ###################################################################### authentication.type1=username
127
authentication.type1.header= # # Values to work with WES Authentication proxy : # # authentication.type1=username # authentication.type1.header=X-IBM-PVC-User # ###################################################################### # 2nd authentication type (with login/pwd prompting): # basic | form : form is supported only in multi-domain mode : # (authentication.multidomain.enabled=yes) # # The 2nd authentication type is used if the 1st one fails or is not active # ###################################################################### authentication.type2=form # ###################################################################### # When single sign-on is enabled, the authenticator sets # a SSO cookie "sauth" which can be used by later authentications # It avoids prompting twice the user with authentication form # # This parameter only applies when # "authentication.type2=form" and "authentication.multidomain.enabled=yes" # # SSO is not available in single domain # # Allowed values : yes | no ###################################################################### authentication.sso.enabled=yes # ###################################################################### # Single Sign On cookie parameters # only required if "authentication.sso.enabled=yes" ###################################################################### # SSO cookie name authentication.cookie.name=sauth # SSO cookie path authentication.cookie.path=/authentication # SS0 Cookie maxage : positive value in second, or negative values means non persistant authentication.cookie.maxage=-1 # SSO Cookie invalidation delay : positive value in second # After that period of time, even replayed (by a hacker) the cookie # is rejected authentication.cookie.invalidation.delay=3600 # # Use encrypted SSO cookie : yes | no # Turn to off when single-domain authentication is used : it avoids # useless encryption/decryption authentication.cookie.encrypted=yes
128
# # Key index for cookie encryption authentication.key=5 # ###################################################################### # Default redirection URL after authentication # This default is usually overridden by the URL of the service # which requests the authentication ###################################################################### authentication.openurl=http://www.ibm.com # ###################################################################### # Redirection URL after Single Sign On logout : # It can be a welcome page, not personalized ###################################################################### authentication.logout.url=http://www.tivoli.com # ###################################################################### # Default realm ###################################################################### authentication.default.realm=IBM # ###################################################################### # Authentication server uses a pool of prepared statements # Pool size : min, max nbr of statements ###################################################################### accessbean.statementpool.min = 1 accessbean.statementpool.max = 5 # ###################################################################### # For test : force a username or username@realm # (uncomment to force a user name) # # to use that facility the property above must be set : # authentication.type1=username # ###################################################################### # authentication.force.username=TEST1@IBM # ###################################################################### # Session Load Balancing Parameters : # >> Parameters for Checker side only # # >> Session load balancing can be activated if the portal is # >> deployed on a cluster of servers with eND (WebSphere Perf. Pack) # >> # >> It is perticularly useful in environments where eND sticky port cannot # >> be used, such as with a WAP gateway or a proxy that hides user-agent IP address # >> # >> To enable the load balancing : specify here the server cluster # >> hostname (or IP address), and
129
# >> the server private hostname (or IP address) . # >> # >> It requires that the portal pages are deployed using relative # >> hyperlinks (no hostname in the links) or server private hostname. ###################################################################### # authentication.cluster.hostname=cluster.ibm.com # authentication.private.hostname=myhost.ibm.com ###################################################################### # PREMIUM CONTENT Parameters : # >> These parameters are only necessary on Checker side # >> Each premium content server contains the definition of its tiers # >> # >> On Authentication server side the TSM data base contains also the # >> tiers definition, as defined with the TSM director tool # >> # >> These are optional parameters : # >> if ommitted it runs simple authentication w/o # >> premium content access control ###################################################################### # The tier ids of the premium content protected by this Checker # If more than one tier, use ',' as separator ###################################################################### authentication.premium.tierids=08004 # authentication.premium.tierids=08004,08005 ###################################################################### # List of URL's patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URL's patterns for one tier, use ',' as separator # /perso is not in that list : it is not subject to premium content access control ###################################################################### authentication.premium.tierurls.08004=/premium # authentication.premium.tierurls.08005=/dummysample1,/dummysample2,/dummysample3 ###################################################################### # This URL is displayed when the access to a premium content is # rejected. # It can be an error page, selfcare, a portal page,... # It is recommended to use a full URL here ###################################################################### premium.accessrejected.url=http://itso14.dev.tivoli.com:10080/premium/premiumerror. html ###################################################################### # Log the access to a premium service into file... ###################################################################### premium.access.log=no premium.access.logname=/var/adm/logs/premium.log ###################################################################### # Optional Profiler class : if specified it is called at each session # start. It allows the portal WebMaster to specify rules which # create dynamic User profile propeties # see com.tivoli.tsm.perso.filter.SampleProfiler ###################################################################### authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler
130
6.3.1.4 IE.properties The IE.properties is the properties for Internet Explorer browsers as seen in the following screen.
###################################################################### # TSM DeviceType properties for authentication and personalization ###################################################################### # device type name # It is structured like a file path : # / is the root # /WEB is the sub-root for every HTTP/HTML browsers # /WAP is the sub-root for every WAP devices ###################################################################### # device.type=/WEB # ###################################################################### # Content-type's accepted by the device separated by , # # The 1st one in the list is the main content type, # it plays a special role in the component framework : it is the content # type forced by the LayoutComponent's ###################################################################### # device.content.types=text/html,text/plain,image/gif,image/jpeg # ###################################################################### # device presentation properties # (-1 means unknown value) ###################################################################### # device.color.nbr=-1 device.column.nbr=-1 device.line.nbr=-1 # ###################################################################### # Any ISP defined properties ... ###################################################################### #
6.3.1.5 Nav4.properties Nav4.properties is the properties for Enterprise Navigator browsers, as seen in the following screen.
131
.
###################################################################### # TSM DeviceType properties for authentication and personalization ###################################################################### # device type name # It is structured like a file path : # / is the root # /WEB is the sub-root for every HTTP/HTML browsers # /WAP is the sub-root for every WAP devices ###################################################################### # device.type=/WEB # ###################################################################### # Content-type's accepted by the device separated by , # # The 1st one in the list is the main content type, # it plays a special role in the component framework : it is the content # type forced by the LayoutComponent's ###################################################################### # device.content.types=text/html,text/plain,image/gif,image/jpeg # ###################################################################### # device presentation properties # (-1 means unknown value) ###################################################################### # device.color.nbr=-1 device.column.nbr=-1 device.line.nbr=-1 # ###################################################################### # Any ISP defined properties ... ###################################################################### #
The next parameter specifies the device type and the user agent. This property is mandatory. This type is used by pTk portlet framework to generate the content that fits each device. The device type is hierarchal (Figure 85 on page 133):
device.type=/WEB/IE
132
The next parameter is mandatory and specifies the type of content supported by that device. The first content type in the list must be the primary markup language used by thin device. It is used by the portlet framework.
device.content.types=text/html,text/plain,image/gif,image/jpeg
133
Mobile WAP Devices need to access the internet through a wireless network. To do this, the user dials the NAS (Network Access Server), which prompts the authentication form, user, and password. The NAS is a gateway between networks and the internet that allows the users to connect to the ISP. Once the user is connected to the internet, he or she goes through the WAP Gateway that connects the WAP Protocol to HTTP Protocol to the Portal Web Server. Once users are connected, they can access their portal pages. At this point the Authentication Checker determines if the user has accessed before and prompts authentication for TPSM. The authentication can only be through configuration with the TPSM.
134
The Wireless World has its own features that make the configuration and personalization of TPSM different. The main features are: Protocol WAP Programming Language; WML, WML Script, XML Different infrastructure; Wireless Gateway, mobiles, PDAs These features have important consequences that affect configuration. The main consequences are: Different ways to process the data, so different ways to authenticate Different way to program the JSPs Different configuration of servlets Besides all these general differences are some differences depending on the infrastructure that the customer has, such as if the customer has a gateway or not, a RADIUS server or not, and the type of gateway. Authentication is the same as that for Internet World in some cases. The authentication server has a pTk component called Authentication Checker that determines the type of device that its trying to access. Once that it knows the type of device, the Authentication Server treats it as the device needs. To do this, the servlets must be configured for the type of infrastructure.
135
The content file system has different parts, as you can see in Figure 87: css contains the default style sheet for the authentication server. en contains all the English JSPs. images contains all the pictures for the authentication server. ja contains all the Japanese JSPs. The JSP used for mobile internet is wapauthentication.jsp, and is a form in WML with a Java Bean that creates a session. The default wapauthenticator.jsp sometimes needs to be changed by hand in some fields because it doesnt get all the information. This is based on the mobile device. Keep this in mind if you notice odd behavior while configuring an application, and the /usr/WebSphere/AppServer/logs/authentication.log appears as the user is using the wapauthentication.jsp, then you need to update the default. The next screen is an example of wapauthentication.jsp, but the file has been modified to be able to work for the business cases.
136
<%@ page contentType="text/vnd.wap.wml" import="java.util.*,java.text.*,com.tivoli.tsm.authentication.*"%> <jsp:useBean id="auth" class="com.tivoli.tsm.authentication.AuthFormBean" scope="request" /> <?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <template> <do type="prev" name="back" label="Back"> <prev/> </do> </template> <card id="login" title="TISM Authentication"> <p> User: <input type="text" title="userid" name="userid"/> Password : <input type="password" title="password" name="password"/> <anchor>Submit <go href="<%= auth.getAuthenticationServerURL() %>" method="get"> <postfield value="$(userid)" name="SMSusername" /> <postfield value="$(password)" name="SMSpassword" /> <postfield value="<%=auth.getKeyIndex()%>" name="SMSkey" /> <postfield value="ITSOCHANNEL" name="SMSrealm" /> <postfield value="http://itso14.dev.tivoli.com:16080/perso/home" name="SMSurl" /> <postfield value="<%=auth.getTierList()%>" name="SMStiers" /> </go> </anchor> </p> </card> </wml>
The bolded lines in this JSP are vital to understanding how TPSM works. In that code, the JSP sets the type of mime type and creates the Java Bean auth to collect the data needed for authentication. The rest of the code is a WML form. As you can see the SMSrealm and SMSurl has been changed by hand. These fields are the REALM and the URL to go back to when the user is authenticated that we used because we dont pass these parameters. The configuration for the servlets will be explained in the sample business cases because it depends on the environment.
137
138
The recommended value is no because it can be used when devices do not support HTTP redirect properly, but we set it as yes because the mobile devices that we are using support HTTP redirection. Because we dont have a gateway, we set:
authentication.type1 = no authentication.type2 = form
These parameters disable auto logon and prompt the user with a log-in WML form.
authentication.sso.enabled = no
Although we are not using a gateway at the moment, we set this parameter as no. Many WAP gateways do not support cookies. In that case, it is better to disable the SSO Cookie. The IBM WAP gateway supports session cookies, and can be used for SSO.
authentication.openurl=http://www.ibm.com
If the servlet doesnt receive the REALM that is using, it would get this one as default. See the next screen for the WAPAuthentication.properties code.
139
###################################################################### # TSM DefaultAuthenticator properties ###################################################################### # ###################################################################### # Multi-domain or Single-Domain authentication # # - Multi-domain : allows Single Sign-On (SSO) on several # domains, including domains hosted by tiers (premium content) # It requires that devices supports HTTP redirect properly # # - Single-domain : allows SSO on a single ISP domain # It does not use HTTP redirect since the authenticaiton is done # directly in the Checkers. # So it is faster, and good for dummy devices (I won't give name here ;-) # # Multi-domain is the default, allowed values : yes | no ###################################################################### authentication.multidomain.enabled=yes # ###################################################################### # authentication server URL : http://hostName:port ###################################################################### authentication.server.url=http://itso14.dev.tivoli.com:8080 # ###################################################################### # authentication server path ###################################################################### authentication.server.uri=/authentication/server # ###################################################################### # authentication form file path ###################################################################### authentication.form.path=/authentication/en/wapauthentication.jsp # ###################################################################### # 1st authentication type (w/o login/pwd prompting) : # authentication.type1 = ip | username | no # # it must also specify the packet header which contains that information : # authentication.type1.header = ip | <any HTTP header name> # # if authentication.type1=username is used take care of the other property : # authentication.force.username which forces a test username # authentication.type1=no #authentication.type1.header = X-Network-Info # # IBM WAP gateway of Nokia enterprise gateway #authentication.type1.header=X-Network-Info # Ericsson WAP gateway 1.1 # authentication.type1.header=Cookie
140
###################################################################### # 2nd authentication type (with login/pwd prompting): # basic | form # The 2nd authentication type is used if the 1st one fails or is not active ###################################################################### authentication.type2=form # ###################################################################### # When single sign-on is enabled, the authenticator sets # a SSO cookie "sauth" which can be used by later authentications # It avoids prompting twice the user with authentication form # # This parameter only applies when "authentication.type=form" is used # when "authentication.type=ip or basic" SSO is always enabled ###################################################################### authentication.sso.enabled=no # ###################################################################### # Single Sign On cookie parameters ###################################################################### # SSO cookie name authentication.cookie.name=sauth # SSO Cookie path authentication.cookie.path=/authentication # SSO Cookie maxage : positive value in second, or negative values means non persistant authentication.cookie.maxage=-1 # SSO Cookie invalidation delay : positive value in second # After that period of time, even replayed (by a hacker) the cookie # is rejected authentication.cookie.invalidation.delay=3600 # # Use encrypted SSO cookie : yes or no authentication.cookie.encrypted=yes # # Key index for SSO cookie encryption authentication.key=5 # ###################################################################### # Default redirection URL after authentication ###################################################################### authentication.openurl=http://www.ibm.com # ###################################################################### # Default realm ###################################################################### authentication.default.realm=IBM # ###################################################################### # Use session context : yes/no # >> Using session context optimizes performances # >> In a Web server cluster (e.g. with eND), session context # must be used carefully : with eND sticky port, or WAS Advance Edition # clustering feature ###################################################################### authentication.session.used=yes
141
###################################################################### # Authentication server uses a pool of prepared statements # Pool size : min, max nbr of statements ###################################################################### accessbean.statementpool.min = 1 accessbean.statementpool.max = 5 ###################################################################### # For test : force a username or username@realm # (uncomment to force a user name) # # to use that facility the property above must be set : # authentication.type1=username # ###################################################################### # authentication.force.username=TEST1@IBM
###################################################################### # PREMIUM CONTENT Parameters : # >> These parameters are only necessary on Checker side # >> Each premium content server contains the definition of its tiers # >> # >> On Authentication server side the TSM data base contains also the # >> tiers definition, as defined with the TSM director tool # >> # >> These are optional parameters : # >> if ommitted it runs simple authentication w/o # >> premium content access control ###################################################################### # The tier ids of the premium content protected by this Checker # If more than one tier, use ',' as separator ###################################################################### authentication.premium.tierids=08004,08005 # ###################################################################### # List of URL's patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URL's patterns for one tier, use ',' as separator # /perso is not in that list : it is not subject to premium content access control ###################################################################### authentication.premium.tierurls.08004=/premium authentication.premium.tierurls.08005=/dummysample1,/dummysample2,/dummysample3 # ###################################################################### # This URL is displayed when the access to a premium content is # rejected. # It can be an error page, selfcare, a portal page,... # It is recommended to use a full URL here ###################################################################### premium.accessrejected.url=http://wap.yahoo.com
142
####################################################################### # Log the access to a premium service into file... ###################################################################### premium.access.log=yes premium.access.logname=premium.log # # ###################################################################### # Optional Profiler class : if specified it is called at each session # start. It allows the portal WebMaster to specify rules which # create dynamic User profile propeties # see com.tivoli.tsm.perso.filter.SampleProfiler ###################################################################### authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler
Device.properties The Device.properties is an example of properties file for devices. The explanation for this one is the same as IE.properties and Nav4.properties. Each type of WAP Device has its own type of file, so now we have an example. The first code line is a label for the device. After that, it sets the mime types supported and the presentation properties for the device. See the next screen for the code.
###################################################################### # TSM DeviceType properties for authentication and personalization ###################################################################### # device type label ###################################################################### device.type=/WAP/NokiaEmul # ###################################################################### # content types accepted by the device # # The 1st one in the list is the main content type, # it plays a special role in the component framework : it is the content # type forced by the LayoutComponent's ###################################################################### device.content.types=text/vnd.wap.wml,text/vnd.wap.wmlscript,application/vnd.wap.wm lc,application/vnd.wap.wmlscriptc,image/vnd.wap.wbmp # ###################################################################### # device presentation properties ###################################################################### device.color.nbr=2 device.column.nbr=20 device.line.nbr=5
143
6.4.2.2 Example Here is the result of this configuration. When you write in the URL, http://hostname:8080/authentication/server, the first screen as shown in Figure 88 appears, where you write the userid and password. Once sent to the authentication server, the userid and password are checked and, if correct, the user will be redirected to the URL.
144
###################################################################### # TSM DefaultAuthenticator properties ###################################################################### # ###################################################################### # Multi-domain or Single-Domain authentication # # - Multi-domain : allows Single Sign-On (SSO) on several # domains, including domains hosted by tiers (premium content) # It requires that devices supports HTTP redirect properly # # - Single-domain : allows SSO on a single ISP domain # It does not use HTTP redirect since the authenticaiton is done # directly in the Checkers. # So it is faster, and good for dummy devices (I won't give name here ;-) # # Multi-domain is the default, allowed values : yes | no ###################################################################### authentication.multidomain.enabled=yes # ###################################################################### # authentication server URL : http://hostName:port ###################################################################### authentication.server.url=http://itso14.dev.tivoli.com:8080 # ###################################################################### # authentication server path ###################################################################### authentication.server.uri=/authentication/server # ###################################################################### # authentication form file path ###################################################################### authentication.form.path=/authentication/en/wapauthentication.jsp # ###################################################################### # 1st authentication type (w/o login/pwd prompting) : # authentication.type1 = ip | username | no # # it must also specify the packet header which contains that information : # authentication.type1.header = ip | <any HTTP header name> # # if authentication.type1=username is used take care of the other property : # authentication.force.username which forces a test username # #authentication.type1=no authentication.type1.header = X-Network-Info
145
# Ericsson WAP gateway 1.1 # authentication.type1.header=Cookie # ###################################################################### # 2nd authentication type (with login/pwd prompting): # basic | form # The 2nd authentication type is used if the 1st one fails or is not active ###################################################################### authentication.type2=form # ###################################################################### # When single sign-on is enabled, the authenticator sets # a SSO cookie "sauth" which can be used by later authentications # It avoids prompting twice the user with authentication form # # This parameter only applies when "authentication.type=form" is used # when "authentication.type=ip or basic" SSO is always enabled ###################################################################### authentication.sso.enabled=no # ###################################################################### # Single Sign On cookie parameters ###################################################################### # SSO cookie name authentication.cookie.name=sauth # SSO Cookie path authentication.cookie.path=/authentication # SSO Cookie maxage : positive value in second, or negative values means non persistant authentication.cookie.maxage=-1 # SSO Cookie invalidation delay : positive value in second # After that period of time, even replayed (by a hacker) the cookie # is rejected authentication.cookie.invalidation.delay=3600 # # Use encrypted SSO cookie : yes or no authentication.cookie.encrypted=yes # # Key index for SSO cookie encryption authentication.key=5 # ###################################################################### # Default redirection URL after authentication ###################################################################### authentication.openurl=http://itso14.dev.tivoli.com:16080/perso/samples # ###################################################################### # Default realm ###################################################################### authentication.default.realm=ITSOCHANNEL ###################################################################### # Use session context : yes/no # >> Using session context optimizes performances # >> In a Web server cluster (e.g. with eND), session context # must be used carefully : with eND sticky port, or WAS Advance Edition # clustering feature ######################################################################
146
authentication.session.used=yes ###################################################################### # Authentication server uses a pool of prepared statements # Pool size : min, max nbr of statements ###################################################################### accessbean.statementpool.min = 1 accessbean.statementpool.max = 5 ###################################################################### # For test : force a username or username@realm # (uncomment to force a user name) # # to use that facility the property above must be set : # # authentication.type1=username ###################################################################### # authentication.force.username=TEST1@IBM
###################################################################### # PREMIUM CONTENT Parameters : # >> These parameters are only necessary on Checker side # >> Each premium content server contains the definition of its tiers # >> # >> On Authentication server side the TSM data base contains also the # >> tiers definition, as defined with the TSM director tool # >> # >> These are optional parameters : # >> if ommitted it runs simple authentication w/o # >> premium content access control ###################################################################### # The tier ids of the premium content protected by this Checker # If more than one tier, use ',' as separator ###################################################################### authentication.premium.tierids=08004,08005 # ###################################################################### # List of URL's patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URL's patterns for one tier, use ',' as separator # /perso is not in that list : it is not subject to premium content access control ###################################################################### authentication.premium.tierurls.08004=/premium authentication.premium.tierurls.08005=/dummysample1,/dummysample2,/dummysample3 # ###################################################################### # This URL is displayed when the access to a premium content is # rejected. # It can be an error page, selfcare, a portal page,... # It is recommended to use a full URL here ######################################################################
147
premium.accessrejected.url=http://wap.yahoo.com # ###################################################################### # Log the access to a premium service into file... ###################################################################### premium.access.log=yes premium.access.logname=premium.log # # ###################################################################### # Optional Profiler class : if specified it is called at each session # start. It allows the portal WebMaster to specify rules which # create dynamic User profile propeties # see com.tivoli.tsm.perso.filter.SampleProfiler ###################################################################### authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler
6.4.3.2 Example screen The screens that appear upon entering the URL http://hostname:8080/authentication/server are the same as the ones from Business Case 1 as seen in Figure 88 on page 144.
148
149
The TISM Administration Console should be open now. Double click on Access Control, click on Profiles, right click on CSR, and choose add as shown in Figure 90.
150
Fill out the Profile Name field and click on the checkbox for the REALM that is going to administer the new role, then click the Add button as shown in Figure 91.
Fill in the fields in the window as shown in Figure 92, then click on Add.
Now we can see the profile that we have just created, as shown in Figure 93 on page 152.
151
After we created a Profile, we now must create a Login to access the Customer Care. Right click on Login, then click on Add as shown in Figure 94.
152
This will open the window shown in Figure 95. Fill out all the information. In the Access Profile, choose the one that you just have created, in our example CSR_ITSOCHANNEL.
153
154
On the Login panel, Enter Login Name and Password. This Login Name needs to be created with the Director Tool and have a REALM associated with it. Press OK as shown in Figure 97.
When you are successfully authenticated, the Search screen is shown (Figure 99 on page 158). Please refer to Section 7.4.2, View and update a subscriber account on page 157 for further details.
155
156
157
If the search produced a list of subscribers, select the correct one from the list by double clicking the subscriber's name or highlighting the subscriber and clicking the "UPDATE" button. The Subscriber Update panel is displayed (Figure 100 on page 159) with the subscriber information filled in. View the existing data or make changes as needed. If changes are made, press the "UPDATE" button to process them. Error messages will appear near the "Update" button if changes are invalid. Make changes as indicated by the messages and press "Update" again. A "success" message will appear when changes are successful.
158
159
If the subscriber is changing from Credit Card to Invoice, the credit card fields will be removed from the window. If the subscriber is changing from Invoice to Credit Card, the associated credit card fields will display next to the Payment Method box (Figure 101). The CSR will be required to enter the Account Number, Expiration Date, and the Account Holder name. Press the UPDATE button. If there are errors, make the corrections indicated by the message and press Update again.
160
161
Subscriber status displayed at the top of the window will state Active instead of Disconnected (Figure 103 on page 161).
162
Note
The primary Subscriber Update window shows the details of the "parent" account, including payment and deal details. These elements cannot be changed for the child subscriber. Enter the username, password, secret word, and other required fields for the child subscriber and then press the Enroll button. The comment at the bottom of the screen will confirm that the child has been enrolled.
7.5 Reports
This function is launched by pressing the Reports button on the Customer Care menu bar. The next applet window will appear as shown in Figure 105 on page 164. Available Reports include: Daily Report of Enrollment Activity Daily Report of Session Activity Daily Report of Hourly Activity Weekly Member Level Part 1 Report Weekly Member Level Part 2 Report Weekly Subscriber Level Report
163
Monthly Usage Summary Report Monthly Cohort by Hours Report Monthly Enrollment by Access Code Report Monthly Enrollment Report Monthly Disconnect Analysis Report
164
165
166
8.1 Overview
Subscriber Selfcare is a suite of applications that allows subscribers to view and change personal information collected during enrollment (refer to Chapter 5, Enrollment and service provisioning on page 73). These applications let a subscriber perform the following: Change password Display and update personal information (name, address, phone numbers) Display and update payment information Display and add member accounts under the subscriber account Display devices the member has enrolled (only in Tivoli Personalized Services Manager) These functions are presented to a subscriber using HyperText Markup Language (HTML) pages or Java Server Pages (JSPs) that a Service Provider (SP) can customize to give them a unique appearance. All of the applications are run from servlets hosted on a Web server.
8.2 Customization
The flow and order of presentation of pages is controlled by the main JSP file. Through programmatic tests of the current state of the data object, the page to be displayed is selected. The SP can rearrange the order of presentation, combine or divide the content of individual pages, and take side trips to other applications through customization of the JSP pages. The customiser is responsible for ensuring that side trips are returned from and prerequisites are entered before dependent data. The JSP files, which are located in the /usr/TivTSM/selfcare/content/jsp directory, are described in Table 12:
Table 12. JSPs for SelfCare
167
JSP File AddMemberMemberCancel AddMemberCommit AddMemberInput AddMemberMain AddMemberRefused AddMemberSubmit ChangePasswordAuthError ChangePasswordCancel ChangePasswordCommit ChangePasswordInput ChangePasswordMain ChangePasswordRefused ChangePasswordSubmit ChangePaymentAuthError ChangePaymentCancel ChangePaymentCommit ChangePaymentInput ChangePaymentMain ChangePaymentRefused ChangePaymentSubmit ChangePersonalInfoAuthError ChangePersonalInfoCancel
Description If you cancel the registration, it will send you to this JSP. Commits the changes to the database. New Member form,. JSP that controls all the flow. If there is anything wrong with the information entered. Asks for confirmation to proceed with the registration. Authentication Page. If you cancel the registration, it will send you to this JSP. Commits the changes to the database. The Change Password form to be filled. JSP that controls the flow. If there is anything wrong with the password, this JSP is called. Asks if you want to go ahead with the new password. Authentication page. If you cancel the payment, it would send you to this JSP. Commits the changes to the database. The form to change the information. JSP that controls the flow. If there is something wrong. Asks for confirmation to proceed with the changes. User authentication. If you cancel the registration, it would send you to this JSP.
168
JSP File ChangePersonalInfoCommit ChangePersonalInfoInput ChangePersonalInfoMain ChangePersonalInfoRefused ChangePersonalInfoSubmit DisplayDeviceAuthError DisplayDeviceInfo DisplayDeviceList DisplayDeviceMain DisplayDevicenotFound DisplayDeviceRefused
Description Commits the changes to the database. Shows the fields to change. JSP that controls the flow. If there is anything wrong with a field, this JSP is called. Asks for confirmation to proceed with the changes. Authentication page. Display the device information. Display the devices. JSP that controls the flow. If a device is not found. If there is something wrong with the device.
All Selfcare use a common configuration file named selfcare.properties located in /usr/TivTSM/selfcare/. In Table 13, you can see each of the variables that you can modify.
Table 13. SelfCare.properties file variables
Description The URL location of the application JSP files. The name of the main JSP file. The URL location of the application host. A switch to cause the logging of more detailed messages. Exit class of application. Device specific class.
169
Variable displayDevice.device.PC
The URL location of the application JSP files. The name of the main JSP file. The URL location of the application host. A switch to cause the logging of more detailed messages. Exit class of application. Device specific class. Device specific class. The URL location of the application JSP files. The name of the main JSP file. The URL location of the application host. A switch to cause the logging of more detailed messages. Exit class of application. Device specific class. Device specific class. The URL location of the application JSP files.
com.tivoli.tsm.selfcare.Sa mpleExit1 com.tivoli.tsm.selfcare.Ch angePassword4PC com.tivoli.tsm.selfcare.Ch angePassword4PC /selfcare ChangePaaymentMain.jsp http://itso14.dev.tivoli.com false
170
Description The name of the main JSP file. The URL location of the application host. A switch to cause the logging of more detailed messages. Exit class of application. Device specific class. Device specific class. The URL location of the application JSP files. The name of the main JSP file. The URL location of the application host. A switch to cause the logging of more detailed messages. Exit class of application. Device specific class. Device specific class.
changePersonalInfo.exitCl ass changePersonalInfo.devic e.default changePersonalInfo.devic e.PC addMember.JSPPath addMember.mainJSPPage addMember.hostName addMember.debug
com.tivoli.tsm.selfcare.Sa mpleExit1 com.tivoli.tsm.selfcare.Ch angePassword4PC com.tivoli.tsm.selfcare.Ch angePassword4PC /selfcare AddMemberMain.jsp http://itso14.dev.tivoli.com false
171
Use the URL for each of the Subscriber Selfcare applications. In the demonstration version of Subscriber Selfcare, links to all of the existing Subscriber Selfcare applications are available in intro.htm. To access the Self Care Administration home page, go to the next URL: http://itso14.dev.tivoli.com:15080/intro.htm. The screen as shown in Figure 106 will open.
In this screen we can choose which task to perform: Change Password Change Personal Information Change Payment Information Add New Members
172
When we introduced the username and password we were authenticated in the Authentication Server, (please refer to Chapter 6, Subscriber authentication and access control on page 111),and now we are ready to change the password as is shown in Figure 108.
173
Once this form is completely filled out, click on Change Password to proceed. You will be prompted to confirm this step as shown in Figure 109.
When we confirm the password a message like the one in Figure 110 on page 174 will be shown.
174
page 172) choose Change Personal Information. Type your username and password in the Login screen as shown in Figure 107 on page 173. This will bring up a screen to update Personal Information as shown in Figure 111.
When the changes are complete, click on Change Personal Information, which will bring up a confirmation page as shown in Figure 112 on page 176
175
When you click on Yes, Change Personal Information, the database is updated with the new data and a message with the new information is displayed.
176
Update the information and click Change Payment Information. A confirmation screen will be displayed (Figure 114 on page 178), in this screen, click Yes, Change Payment Information to confirm the changes.
177
When the changes are accepted a screen with the new values is shown.
178
179
When you click on Add A Member, a confirmation screen is displayed. Click Yes, Add Member, and the information on the new member will be displayed.
180
9.2 Functionality
The following are the main functions of Portal Toolkit.
181
182
These authentication modes can also be tuned for the various service providers environments using the authentication plug-in architecture (authenticators). The TISM portlet framework can generate content according to the type of device currently connected. Each portlet knows the type of device, and selects the content (the Java server page) that fits with it. All the portlet sample pages provided with the pTk support both HTML and WML contents.
183
184
Checker.getSSOUserName () This GET method can be invoked by a JSP or Servlet protected by the TISM Authentication System to retrieve the connected user's username.
<% @ import="com.tivoli.tsm.authentication.*" %> <% String name = Checker.getSSOUserName (request); String password = Checker.getSSOPassword (request); %>
Checker.getSSOPassword () This GET method can be invoked by an JSP or Servlet protected by the TISM Authentication System to retrieve the connected user's password.
<% @ import="com.tivoli.tsm.authentication.*" %> <% String name = Checker.getSSOUserName (request); String password = Checker.getSSOPassword (request);%>
185
This method reads the data of the authenticated user from the TISM database, and populates the AccessBean attributes. If it fails it throws a PersonalizationException. public abstract void update(ServletRequest request) throws PersonalizationException This method stores the data contained in the AccessBean in the TISM database. This is done only if the data in the AccessBean has been changed since the read() has been invoked. If it fails it throws a PersonalizationException. public static String getWellKnownName() This method returns the well-known name of the AccessBean. Each AccessBean class has a unique well-known name used as a key to store its instance in the user HttpSession. Use that name to avoid storing double instances of the same AccessBean in one user session. public static AccessBean getBean(ServletRequest request) throws PersonalizationException This method is not in AccessBean.class, but it is implemented by every real sub-classes of access Bean. It retrieves in the user HttpSession the corresponding AccessBean instance, either by its name or type. If no instance exists yet, it creates one new instance and populates its data by calling the read() method. It creates a user session, if none exists, and stores the AccessBean instance as HttpSession attributes. These attributes use the access Beans well-known name. The following table is the real AccessBean implementations. They do not provide a detailed description of all of their functions; this can be found in the Java documentation provided with TISM. It only gives clues on the most significant methods. Some access Beans are read only; it is not possible to modify subscription data with the pTk. Table 14 also lists the commodity classes that are handled by the access Beans.
Table 14. AccessBean implementations
Description Wraps the residential and business accounts Favorite links at account level
Commodity Classes
Read or Read/Write R
AccountFavouriteLinks
R/W
186
Description All users sharing the same account Generic properties at account level Users agenda entries Users agenda entries Device profile All members of a family Users favourite links
Commodity Classes
Read or Read/Write R
R/W
R/W
Agenda
R/W
R R Link, LinkEnumeration, LinkCategoryEnumerat ion, LinkCategorylxEnumer ation NameValue, NameValueEnumeratio n Link, ReferencedLinkEnume ration, ReferencedLinkReposi tory R/W
NameValuePairs
Users generic properties Singleton that contains the hierarchy of referenced links Users information For future use For future use
R/W
ReferencedLinks
R/W
R R
9.3.2.2 Account.class This class is an access Bean that wraps the TISM EBILL_ACCOUNTINFO and EBILL_ACCOUNT tables. An account can be either a residential account or a business account. Business accounts can be organized in a hierarchy mapped on the company organization. This access Bean is read only.
187
public void read(ServletRequest request) throws PersonalizationException This method reads the account data of the authenticated user from the TISM database. If it belongs to a hierarchy of accounts, it reads the lowest level account (tree leaf side) of the user. public Account getParentAccount() throws PersonalizationException, NoResourceFound This method returns the parent account, if any. This is only useful with business accounts that have been organized into a hierarchy. 9.3.2.3 AccountFavoriteLinks.class This class is an access Bean that wraps the PERACCOUNTFAVLINKS table. It can store and retrieve favorite links at each account level. It inherits from FavoriteLinks. For explanations see Section 9.3.2.10, FavoriteLinks.class on page 196. package com.tivoli.tsm.perso; public class AccountFavoriteLinks extends FavoriteLinks; 9.3.2.4 AccountMembers.class This class is an access Bean that retrieves the member of an account, i.e. all users sharing the same account. package com.tivoli.tsm.perso; public class AccountMembers extends AccessBean; public int getMemberNbr() This method returns the number of users sharing that account. public Account getUserName(int ix) This returns the name of the ixth user of that account. If ix is < 0 or > getMemberNbr(), it returns null. public Account getUserFirstName(int ix) It returns the first name of the ixth user of that account. If ix is < 0 or > getMemberNbr(), it returns null. 9.3.2.5 AccountNameValuePairs.class This class is an access Bean that wraps the PERACCOUNTNAMEVALUESET table. It can store any generic property (name=value) at each account level. The name=value set model is different
188
from the Java Properties model; it can store several values with the same name. It inherits from NameValuePairs. For an explanation, refer to the NameValuePairs class description. package com.tivoli.tsm.perso; public class AccountNameValuePairs extends NameValuePairs; 9.3.2.6 AddressBook.class This class is an access Bean that stores and retrieves the address book entries of a user. package com.tivoli.tsm.perso; public class AddressBook extends AccessBean; public synchronized boolean add(AddressBookEntry) This method adds a new address book entry to the AddressBook AccessBean. It is cached in the JVM memory. It will be stored into the TISM data base when the update() method is invoked, or at the end of the user session. It returns true if it succeeds, and false if it fails, in particular if the entry already exists. public synchronized boolean add(String category, String firstname, String lastname, String title, String company, String address, String tel1, String tel2, String fax, String email, String url) This is a commodity method to avoid handling AddrssBookEntry objects. It is equivalent to the add(AddrssBookEntry) method. public synchronized String[] categories() It returns a table containing all the address book categories. This list can be used to display the contacts sorted by categories. public synchronized boolean del(AddressBookEntry delEntry) These two methods delete a contact from the user's address book. It returns true if it succeeded. It returns false if it fails, in particular if the entry does not exist. public synchronized Enumeration elementsByCategoryAndName(String category, String firstname, String lastname) It returns an Enumeration of AddressBookEntry for all the contacts of that user. That enumeration can be used to display all the contacts of a user. public Enumeration elements()
189
It returns an Enumeration of AddressBookEntry for all the contacts. public Enumeration elementsByCategory(String category) It returns an Enumeration of AddressBookEntry for all the contacts belonging to that category. public Enumeration elementsByLastname(StringlastnamePattern) Returns an Enumeration of AddressBookEntry for all the contacts where the lastname field begins with the specified pattern. public Enumeration elementsByCategoryAndLastname(String category, String lastnamePattern) Returns a list of AddressBookEntry entries selected by category and lastname. public synchronized boolean modify(AddressBookEntry entry, String newTitle, String newCompany, String newAddress, String newTel1,String newTel2, String newFax, String newEmail, String newUrl) This method modifies an existing AddressBookEntry from the AddressBook AccessBean, with the new values title, company, address, tel1, tel2, fax #, email, and Url. It returns true if it succeeds, and false if it fails, in particular if the entry does not exist. An example is shown in the following screen.
190
<%@ page buffer="none" import="com.tivoli.tsm.perso.* %> <HTML><BODY> <% // Create, read and populate the AddressBook bean, or just retrieve it from session AddressBook addbook = AddressBook.getBean(request); // Add a new contact AddressBookEntry newEntry = new AddressBookEntry ("Business", "John", "Smith", "Mr", "IBM","LA", "1111111111", "2222222222", "333333333", "js@ibm.com", "http://www.sm.com"); addbook.add(newEntry); %> <!-- Display all entries --> <TABLE border=1 cellspacing=0 cellpadding=4> <TR align="center"> <TD> Category </TD> <TD> Lastname / Firstname </TD> <TD> Tel </TD> <TD> Email </TD> <TD> Url </TD> </TR> <% Enumeration entriesEnum = addbook.elements(); while (entriesEnum.hasMoreElements()) { AddressBookEntry abookentry = (AddressBookEntry) entriesEnum.nextElement(); %> <TR align="center"> <TD> <%=abookentry.getCategory()%></TD> <TD> <%=abookentry.getLastname()%>, <%=abookentry.getFirstname()%></TD> <TD> <%=abookentry.getTel1()%> </TD> <TD> <%=abookentry.getEmail()%> </TD> <TD> <%=abookentry.getUrl()%> </TD> </TR> <% } %> </TABLE> .../... </BODY></HTML>
9.3.2.7 Appointment.class This class is a utility class used to add or store Appointments in the Agenda access Bean. It is not an access Bean. package com.tivoli.tsm.perso; public class Appointment;
191
public Appointment(Date start, int duration, String description) public Appointment(long id, Date start, int duration, String description) start is the start date of the appointment. duration must be defined in minutes. public String displayDate() This method displays the start date of the appointment as a string with the format yyyy:MM:dd E public String displayStart() This method displays the start date of the appointment as a string with the format HH'h'mm public String displayEnd() This method displays the end date of the appointment (start date + duration) as a string with the format HH'h'mm public boolean equals(Appointment appointment) Returns true if the current appointment is equal (same start date, duration and description) to appointment parameter. public java.lang.String getDescription() Returns description of the appointment. public void setDescription(java.lang.String newDescription) Updates the description of the appointment with newDescription. public Date getStart() Returns start date of appointment. public void setStart(java.util.Date newStart) Updates start date of appointment with newStart. public int getDuration() Returns duration (in minutes) of the appointment. public void setDuration(int newDuration) Updates duration of the appointment with newDuration. public int getDurationHour() Converts duration of the appointment in hours (duration in minutes / 60).
192
public int getDurationMin() Returns remaining duration of the appointment in minutes (duration (duration /60)*60). public Date getEnd() Returns the end date of the appointment (start date + duration). public long getId() Returns the database sequence number of the appointment. public void setId(long newId) Updates the database sequence number of the appointment with newId. public int getStartDay() Returns only the day (1- 31) of the start date of the appointment. public int getStartMonth() Returns only the month (1- 12) of the start date of the appointment. public int getStartYear() Returns only the year (2000, 2001, etc.) of the start date of the appointment. public int getStartHour() Returns only the hour (0-23) of the start date of the appointment. public int getStartMin() Returns only the minute (0-59) of the start date of the appointment. public boolean isInThePast() Returns true if the appointment is in the past (older that the current date). 9.3.2.8 Agenda.class This class is an access Bean that stores and retrieves the agenda entries of a user. package com.tivoli.tsm.perso; public class Agenda extends AccessBean; public java.util.Date getStarttime() Returns current date of the agenda. public void setStarttime(java.util.DatenewDate) Updates current date of agenda with a new date
193
public Enumeration elements(int interval, Calendar date) Returns a AppointmentEnumeration of Appointment of the current date of agenda filtered by the hour (interval=HOUR) or by the day (interval=DAY). That enumeration can be used to display all appointments started between a given hour h and h+1, or started on the day d. public synchronized boolean add(Appointmentappointment) This method adds a new appointment to the Agenda AccessBean. It is cached in the JVM memory. It will be stored in the TISM database when the update() method is invoked, or at the end of the user session. It returns true if it succeeds, and false if it fails, in particular if the appointment already exists. public synchronized boolean del(Appointment appointment) This method deletes an existing appointment from the Agenda AccessBean. It will be deleted from the TISM database when the update()method is invoked, or at the end of the user session. public synchronized void del(long id, java.util.Date start, int duration, String description) This method deletes an existing appointment from the Agenda access Bean. The appointment can be identified by a data base sequence number (id), or, if the id is zero, by its start date, duration, and description. It is more efficient to delete an appointment by its id. public boolean modify(Appointment appt, java.util.Date date, int duration, String description) This method modifies an existing appointment appt from the Agenda AccessBean with the new values; start date, duration (in minutes), and description. public int getStartHour() This method gets the latest hour of appointments found in the appointment enumeration given by the elements() methods. public int getMinHour() This method gets the earliest hour of appointments found in the appointment enumeration given by the elements() methods.
194
public void updateMinMaxHours(java.util.Datedate) This method updates minimum or maximum hours given by the methods getMinHour() and getMaxHour() of the agenda if necessary. If the hour of date < getMinHour(), then minHour of agenda is updated with this value. If the hour of date > getMaxHour() then maxHour is updated with this value. An example of use of Agenda.class is shown in the following screen.
<%@ page buffer="none" import="com.tivoli.tsm.perso.*, java.text.*" %> <HTML><BODY> <% // Create, read and populate Account bean, or just retrieve it from session Agenda agenda = Agenda.getBean(request); %> <TABLE border=1> <TR><TH>Start Date</TH><TH>Appointment description</TH><TH>Duration</TH><TR> <% Enumeration appointments = agenda.elements(); while (appointments.hasMoreElements()) { Appointment appt = (com.tivoli.tsm.perso.Appointment) appointments.nextElement(); %> <TR><TD><%=DateFormat.getDateTimeInstance().format(appt.getStart())%><TD> <TD><%=appt.getDescription()%><TD> <TD><%=Integer.toString(appt.getDurationHour())%>h<%=Integer.toString(appt.getDurat ionMin())%>min<TD> </TR> <% } %> </TABLE> .../... </BODY></HTML>
9.3.2.9 FamilyMembers.class This class is an access Bean that retrieves the members of a family. It inherits from AccountMembers. Refer to AccountMembers for explanations. package com.tivoli.tsm.perso; public class FamilyMembers extends AccountMembers; An example is shown in the following screen.
195
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <jsp:useBean id="myFamily" class="com.tivoli.tsm.perso.FamilyMembers" scope="session" /> <% myFamily.read(request); %> <% //---------------------------------// Compute style sheet String style[] = pairs.getValues("style"); String css = "default"; if (style.length >= 1) css = style[0]; int nbr = myFamily.getMembersNbr(); %> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <TITLE> TSM Personal page </TITLE> <LINK rel="stylesheet" href="/perso/css/<%=css%>.css" type="text/css"> </head> <BODY text="#000000" link="#000000" vlink="#000000" alink="#000000"> <TABLE border="0" cellspacing="0" cellpadding="0" >
<TD><A href="http://www.tivoli.com"><IMG src="/images/tivoli_logo.gif" ALT="Tivoli" border="0" ></A></TD> <TD ><IMG width="1000" height="50" src="/images/spacer.gif" ></TD> </TR> <% for (int ix = 0; ix<nbr ; ix++) { %> <TR><TD> </TD><TD> <%= myFamily.getFirstName(ix)%> </TD></TR> <% } %> </TABLE> ..
9.3.2.10 FavoriteLinks.class This class is an access Bean that stores and retrieves the favorite links of a user. package com.tivoli.tsm.perso; public class FavoriteLinks extends AccessBean;
196
public synchronized boolean add(Link link) This method adds a new link to the FavoriteLinks AccessBean. It is cached in the JVM memory. It will be stored in the TISM database when the update() method is invoked, or at the end of the user session. It returns true if it succeeded. It returns false if it fails, in particular if the link already exists. public synchronized boolean add(String category, String title, String URL) This is a commodity method to avoid handling Link objects. It is equivalent to the add(Link) method. public synchronized void del(Link) Deletes a link from the user's favorite links. public synchronized void del(long id) Each link is identified by a data base sequence number. It is more efficient to delete a link by its id. public synchronized void delCategory(String category) Deletes all the links belonging to that category. public Enumeration elements() Returns a LinkEnumeration of Link for all the favorite links of that user. That enumeration can be used to display all the favorite links of a user. public Enumeration elements(String category) Returns an Enumeration of Link for all the links belonging to that category. An example is shown in the following screen.
197
<%@ page buffer="none" import="com.tivoli.tsm.perso.* %> <HTML><BODY> <% // Create, read and populate FavoriteLinks bean, or just retrieve it from session FavoriteLinks links = FavoriteLinks.getBean(request); // Add new links Link link = new Link ("software", "Tivoli", "http://www.tivoli.com"); links.add(link); Link link = new Link ("computers", "IBM", "http://www.ibm.com"); links.add(link); Enumeration myLinks = links.elements(); while (myLinks.hasMoreElement()) { link = (Link) myLinks.nextElement(); %> <H2><%=link.getCategory() + " " + link.getTitle() + " " + link.getUrl() + " " + link.getDeviceType()%> <% } %> .../... </BODY></HTML>
9.3.2.11 NameValuePairs.class This class is an access Bean that stores and retrieves the properties of a user. It wraps the PERNAMEVALUESET table in TISM database. The name=value set model also stores several properties with the same name. package com.tivoli.tsm.perso; public class NameValuePairs extends AccessBean; public synchronized boolean add(NameValuepair) This method adds a new name=value pair into the NameValuePairs AccessBean. It is cached in the JVM memory. It will be stored in the TISM database when the update() method is invoked, or at the end of the user session. It returns true is it succeeds, and false if it fails, in particular if the link already exists. public synchronized boolean add(String name, String value) This is a commodity method to avoid handling NameValue objects. It is equivalent to the add(NameValue) method. public synchronized void del(NameValue) It deletes a NameValue from the user's NameValuePairs.
198
public synchronized void del(long id) Each NameValue is identified by a data base sequence number. It is more efficient to delete a NameValue by its id. public synchronized void del(String name) Deletes all the name=value pairs having the same name. public synchronized void del(String name, String value) Deletes one name=value pair with the supplied name and value. public Enumeration elements() Returns a NameValueEnumeration of NameValue for all properties of that user. public Enumeration elements(String name) Returns a NameValueEnumeration of NameValue for all the values having that name. An example is shown in the following screen.
199
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <% //********************************************************************************** // Code for writting a table with the values of NameValuePairs java bean //********************************************************************************** // Be careful with this variable because its usually used for getting values for the // style sheets // Getting the java bean for the NameValuePairs NameValuePairs pairs = NameValuePairs.getBean(request); //Creating a new Pair of Values NameValue p = new NameValue("hobbies","football"); pairs.add(p); // Code for going through the values of the NameValuePairs Enumeration myProperties = pairs.elements(); NameValue prueba; String valor; String nombre; while(myProperties.hasMoreElements()){ prueba = (NameValue)myProperties.nextElement(); valor = prueba.getValue();%> <TR><td> <%=valor%> </td> <%nombre = prueba.getName();%> <td><%=nombre%></td></TR> <% } %>
9.3.2.12 ReferencedLinks.class This class accesses the repository of referenced links stored in the TISM data base. It is instanciated by user session, and contains data on user's navigation in the tree of referenced links. It is a read only AccessBean. The class that caches the tree of referenced links is ReferencedLinksRepository.class. It is a singleton class. It periodically
200
reloads the referenced links from TISM data base. To update the repository of links, the operator must use TISM director tool. package com.tivoli.tsm.perso; public class ReferencedLinks extends AccessBean; 9.3.2.13 User.class This class is an access Bean that represents the user's subscription data. It wraps the TISM tables PIAUTHUSER, PISUBSCRIBER, and PISUBSCRIBERINFO. It is a read only access Bean. package com.tivoli.tsm.perso; public class User extends AccessBean; An example is shown in the following screen.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <% // Retrieve pTk access beans : user and name value pairs // The getBean() method retrieves or instanciates the bean(s), // then it populates it with TISM DB data. User user = User.getBean(request); %> // // In the HTML code // <H2><font color="#FFFFFF">Welcome <%= user.getFirstName() %> <%=user.getLastName()%> <%= user.getAddress1() %> </font></H2>
201
202
203
A portlet is made of three abstract classes that must be sub-classed by every portlet implementation. See Figure 120. The Component class inherits from HttpServlet. It is the entry point of the portlet. The ComponentSession class contains the user session state of the portlet. The ComponentSession contains the business logic of the portlet: the programmer of a new portlet must override the method:
ComponentSession::service() : it is the portlet "controller"
The ComponentSession creates the Bean(s) that is (are) transmitted to the portlet JSPs for rendering: it contains the portlet model. The ComponentConfiguration class parses the portlet properties file during the portlet init(). In particular it contains the portlet JSP's dispatching rules: portlet JSP = f (portlet Command, Device Type). It contains all the references to the portlet JSP's. It can also be sub-classed to implement additional properties specific to each portlet real implementation. A portlet also contains portlet JSPs that are the portlet view.
204
http://hostname:16080/perso/home This is a redirection to a personalized page. This page depends on the type of device and if the user was authenticated before or not. See Figure 122, Figure 123 on page 206, and Figure 124 on page 206.
205
9.4.3.1 Selecting a layout page The LayoutSelector portlet is possible to select a Layout page according to the device type and page index. The structure of the URL is:
http://hostname:16080/perso/home?layout=pageindex
206
hostname: The DNS or IP address of the portal server. 16080: port for the personalization server /perso/home: alias for LayoutSelector portlet layout: instance name of LayoutSelector portlet pageindex: label defined in the /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/personal/compone nts/LayoutSelectorComponent.properties for the redirection to the JSP file. See the next screen.
###################################################################### # Layout Selector Component for TISM pTk # -----------------------------------# The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # ###################################################################### # Pages for HTML devices ###################################################################### # page./WEB.defaultcmd=/perso/components/layoutselector/homehtml.jsp page./WEB.home=/perso/components/layoutselector/homehtml.jsp page./WEB.addrbook=/perso/components/layoutselector/addrbookhtml.jsp page./WEB.agenda=/perso/components/layoutselector/agendahtml.jsp page./WEB.news=/perso/components/layoutselector/newshtml.jsp page./WEB.logout=/perso/components/layoutselector/logouthtml.jsp # ###################################################################### # Pages for WML devices ###################################################################### # page./WAP/R380.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/R380.minimize=/perso/components/layoutselector/homewml.jsp page./WAP/NokiaEmul.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/NokiaEmul.minimize=/perso/components/layoutselector/homewml.jsp page./WAP/nokia7110.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/nokia7110.minimize=/perso/components/layoutselector/homewml.jsp page./WAP/R320.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/R320.minimize=/perso/components/layoutselector/homewml.jsp
207
9.4.3.2 Addressing a command to an included portlet Each portlet can receive commands and parameters in the HTTP request (GET or POST). The Figure 125 illustrates the command addressing mechanism.
Figure 125. Sending a command and parameters to a portlet in the HTTP request
A portlet is included in the page generated from the redirection of http://hostname:16080/perso/home. The portlet contains an instance name that determines the new pages layout, using the configuration file of the servlet LayoutSelectorComponent. The defined JSP receives a command.
208
9.4.4.1 Component API This static method includes a portlet within a page (servlet or Java Server Page). package com.tivoli.tsm.perso.components; public abstract class Component extends javax.servlet.http.HttpServlet; The methods that comprise this class are: public static void Component::include (String componentPath, String componentName, GenericServlet servlet, HttpServletRequest request, HttpServletResponse response) - String componentPath: each portlet is a servlet, and so has a URL path in the application server. - String componentName: each portlet has an instance name. This name is used to address commands to a portlet. - GenericServlet servlet: the basic code of the including servlet or JSP. - HttpServletRequest request: the HTTP request object. - HttpServletResponse response: the HTTP response object. An example of the method follows:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <HTML> ../.. <TABLE border="0" cellspacing="0" cellpadding="0" width="250"> <TR><TD> <!----------- Component selector ---------------------------> <% Component.include("/perso/componentSelectorComponent", "comps", this, request, response); %> </TD></TR> ../..
9.4.4.2 ComponentSession API Each portlet can receive commands that are processed by the ComponentSession::service() method.
209
The portlet command API provides the means to compute the href attribute of a button or control that will address a command to the current portlet. Each portlet JSP needs to retrieve user session Beans (the model) before generating the page content (the view). package com.tivoli.tsm.perso.components; public abstract class ComponentSession implements javax.servlet.http.HttpSessionBindingListener; The methods for the class ComponentSession are: public void ComponentSession::init(HttpServletRequest request) - HttpServletRequest request : the HTTP request object. This method may be overridden by portlet real implementations. It is invoked by the portlet framework after the ComponentSession object is instanciated, on the 1st user session HTTP request that needs to display that portlet. For portlets that need to access to TISM data base, the init() method usually loads the necessary user's preference Java Bean. public abstract void ComponentSession::service(String command, HttpServletRequest request) throws javax.servlet.ServletException, java.io.IOException - String command: the command addressed to the portlet - HttpServletRequest request: the HTTP request object. This method must be overridden by each portlet real implementation. It contains the portlet controller, the process of each command addressed to the portlet, and the preparation of the Beans before the dispatching of the portlet JSP's. For portlets that need to access the TISM data base, the service() method usually loads at the User's preferences Java Beans when the ComponentSession is instanciated. public String href(String command) - String command: the command addressed to the portlet This method is used by the portlet JSP's to compute the href attribute of buttons or controls. Clicking on such a control will send an HTTP request to the current portlet with the parameter componentName=command. This command will be dispatched by the component framework to the portlet instance identified by componentName.
210
public static ComponentSession getSession(HttpServletRequest request) - HttpServletRequest request: the HTTP request object. This method is used by the portlet JSP's to retrieve the current user's ComponentSession instance. This object carries the Beans (the model) with the data that must be rendered by the JSP. It is a common programming idiom to implement simple data directly as attributes of the ComponentSession class, and provide getXxx() accessors. 9.4.4.3 Portlet configuration Each portlet loads a property file at initialization. That property file is parsed by the ComponentConfiguration class. It contains the portlet JSP's dispatching rules: portlet JSP = f (portlet Command, Device Type). These rules are specified by properties with the following syntax: page.<device type>.<command>=<Portlet JSP URL path> For an example, see Section 9.4.3.1, Selecting a layout page on page 206.
211
9.5.1.1 LayoutSelectorComponent The LayoutSelectorComponent is not included in a page, but rather invoked by an HTTP request URL. It sends out the correct layout JSP that fits the device type. Although the LayoutSelectorComponent is optional, it can be useful with devices such as WAP mobiles because WAP browsers rendering is very critical and must be tuned for different devices. Figure 126 illustrates the use of LayoutSelectorComponent.
For the configuration of the servlet LayoutSelectorComponent, use the LayoutSelectorComponent.properties, which are described in Section 9.4.3.1, Selecting a layout page on page 206. Portlet commands processed by LayoutSelectorComponent For the layout selector, the command indexes the layout pages that are dispatched on the reception of each command. This list is unlimited, and can be extended by the webmaster when the portal site is designed. Table 15 gives a list of commands and layout pages provided with the TISM 1.1 samples.
Table 15. List of portlet commands for the LayoutSelectorComponent
Description Used when no specific command is addressed Displays the portal home page
212
Commands addrbook
Description Displays a layout page that includes the addressbook Displays a layout page that includes the agenda Displays a layout page that includes the news Displays a layout page used at logout
Class definition package com.tivoli.tsm.perso.components; public class LayoutSelectorComponent extends LayoutComponent; public class LayoutSelectorComponentSession extends LayoutComponentSession; 9.5.1.2 ComponentSelectorComponent ComponentSelectorComponent displays the list of available services to the user. The user chooses services, and that information is saved in the user profile. This is used to display, for instance, favorite applications in a homepage. See examples in Figure 127 on page 214 and Figure 128 on page 214.
213
Portlet configuration file The configuration file used for ComponentSelectorComponent servlet is /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Co mponentSelectorComponent.properties as shown in the following screen.
214
###################################################################### # Application Selector Component for TISM pTk # -----------------------------------# # List of applications managed by the ComponentSelector # # The syntax is : # --------------# application.label.<application name>=<application label> # application.icon.<application name>=<application icon URL> # application.componenturl.<application name>=<component URL> # this parameter is required for components # application.iconclickurl.<application name>=<Click URL for the icon> # this parameter is optional : when present, the component icon is clickable # application.devicetype.<application name>=<device_type> # where <device_type> = /WEB, /WAP or / for all devices ###################################################################### # Calendar : Example of application which entry point is a component (servlet) # it is referenced by the URI path of its servlet alias # application.label.calendar=My Calendar application.icon.calendar=/images/calendar.gif application.componenturl.calendar=/perso/calendarComponent application.iconclickurl.calendar= application.devicetype.calendar=/ # ###################################################################### # Agenda : Example of application which entry point is a component (servlet) # it is referenced by the URI path of its servlet alias # application.label.agenda=My Agenda application.icon.agenda=/images/agenda.gif application.componenturl.agenda=/perso/agendaComponent application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximize application.devicetype.agenda=/ # ###################################################################### # Link Selector : Example of application which entry point is a component (servlet) # it is referenced by the URI path of its servlet alias # application.label.links=My Favorite Links application.icon.links=/images/world.gif application.componenturl.links=/perso/linkSelectorComponent application.iconclickurl.links= application.devicetype.links=/ # ###################################################################### # Address book Example of application which entry point is a JSP # It is referenced by the JSP URI path used in a tag <a href="..."></a> # application.label.addressBook=My Address Book application.icon.addressBook=/images/addrbook.gif application.componenturl.addressBook=/perso/addressBookComponent application.iconclickurl.addressBook=/perso/home?layout=addrbook&addressBook=maximize application.devicetype.addressBook=/
215
###################################################################### # Example of aggregation content application.label.news=The News application.icon.news=/images/news.gif application.componenturl.news=/perso/news application.iconclickurl.news=/perso/home?layout=home&news=maximize application.devicetype.news=/ ###################################################################### # Example of an external link with macrosubstitution using the user's profile # This type of link has no component URL application.label.weather=My Weather application.icon.weather=/images/weather.gif application.componenturl.weather= application.iconclickurl.weather=http://search.weather.yahoo.com/weather/query.cgi? q=*getCity* application.devicetype.weather=/WEB ###################################################################### # Component JSP's : dispatched according to (deviceType, componentCommand) ###################################################################### # Pages for HTML devices # The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # Startup mode: defaultcmd --> maximized for WEB devices page./WEB.defaultcmd=/perso/components/componentselector/myapplihtml.jsp # Minimized page page./WEB.minimize=/perso/components/componentselector/minapplihtml.jsp # Page with my applications page./WEB.maximize=/perso/components/componentselector/myapplihtml.jsp page./WEB.myappli=/perso/components/componentselector/myapplihtml.jsp page./WEB.add=/perso/components/componentselector/myapplihtml.jsp page./WEB.delete=/perso/components/componentselector/myapplihtml.jsp # Page with other available applications page./WEB.customize=/perso/components/componentselector/customapplihtml.jsp ###################################################################### # layouts for WAP devices ###################################################################### # Startup mode for WAP devices : defaultcmd --> minimized page./WAP/R380.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/R380.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/R380.add=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/NokiaEmul.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/NokiaEmul.add=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/nokia7110.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/nokia7110.add=/perso/components/componentselector/myappliwml.jsp
216
Each service is described in the properties file by the following attributes: A title: application.label.agenda=My Agenda An icon URL: application.icon.agenda=/images/agenda.gif A portlet URL: application.componenturl.agenda=/perso/agendaComponent An icon click URL: application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=ma ximize For external services (with no portlet) the property application.componenturl.agenda is blank. The icon click URL can be completed dynamically with the user's profiling parameters. It uses pre-defined macros between * characters: http://www.yahoo.com/weather?q=*getCity* URL macros definition The macros are listed in Table 16.
Table 16. Macros for ComponentSelectorComponent
Macro Definition *getLastName* *getFirstName* *getCity* *getGender* *getXxx* *Yyy // any property name not starting with get
Commands defaultcmd
217
Description Minimizes the component Maximizes the component, and displays the user's selection. Adds a new application to the user's profile, and displays the user's selection. Deletes an application from the user's profile, and displays the user's selection. Displays the user's selection. Allows modification of the user's selection.
add
myapplihtml.jsp
myappliwml.jsp
delete
myapplihtml.jsp
myappliwml.jsp
myappli customize
myapplihtml.jsp customapplihtml.js p
myappliwml.jsp
Definition package com.tivoli.tsm.perso.components; public class ComponentSelectorComponent extends Component; public class ComponentSelectorComponentSession extends ComponentSession; Methods public Hashtable getComponents() Returns a Hashtable of ComponentDescription, which is the list of every service available on the portal. ComponentDescription is a utility class that describes a service; URL, title, icon URL, or type. Refer to the pTk Java documentation for a complete description. public Hashtable getMyComponents() Returns a Hashtable of ComponentDescription, which is the list of every service selected by the current user.
218
9.5.1.3 Aggregator The Aggregator is responsible for filtering and aggregating content into a page, such as the head-lines of the portal. An aggregator handles a list of Contents. For each user, that content can be filtered out according to filtering rules specified by the site WebMaster, such as new promotions targeting some categories of users. The aggregated contents are presented in a JSP selected according to the device type. Those JSPs are responsible for skinning the aggregated contents with the correct mark-up language (HTML, WML, etc). The contents' abstract and detailed texts should not include any markup tags so they are device type independent. Portlet configuration file The file used for the configuration of this servlet is /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Ag gregatorComponent.properties as shown in the following screen. Each content is defined by: A label: politics A content abstract defined by its local URL:
aggregator.abstract.politics=/perso/samples/news/politics_abstract.txt
The content filtering rules are specified in a class which is loaded by name. This class can be defined by the site webmaster to specify any filtering rules based on the user's profile. This class must implement the Filter API. Its name is specified in the property: aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter The component is shown in the following screen.
219
###################################################################### # Aggregator Component for TISM pTk # -----------------------------------###################################################################### # # List of contents aggregated # The syntax is : # aggregator.content.<content name>=<URL> # aggregator.abstract.politics=/perso/samples/news/politics_abstract.txt aggregator.content.politics=/perso/samples/news/politics_news.txt aggregator.images.politics=/images/news/clinton.jpg # aggregator.abstract.basketball=/perso/samples/news/basketball_abstract.txt aggregator.content.basketball=/perso/samples/news/basketball_news.txt aggregator.images.basketball=/images/news/basketball.jpg # aggregator.abstract.golf=/perso/samples/news/basketball_abstract.txt aggregator.content.golf=/perso/samples/news/golf_news.txt aggregator.images.golf=/images/news/golf.jpg # aggregator.abstract.soccer_1=/perso/samples/news/soccer_abstract.txt aggregator.content.soccer_1=/perso/samples/news/soccer_news.txt aggregator.images.soccer_1=/images/news/soccer.jpg # aggregator.abstract.soccer_2=/perso/samples/news/euro2000_abstract.txt aggregator.content.soccer_2=/perso/samples/news/euro2000_news.txt aggregator.images.soccer_2=/images/news/euro2000.jpg # ###################################################################### # Class to be provided to filter the contents to be displayed to a user # The SampleFilter works with the samples provided with TISM ###################################################################### # aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter # ###################################################################### # Pages for HTML devices ###################################################################### # # news aggregator page page./WEB.defaultcmd=/perso/components/aggregator/newsabstract.jsp page./WEB.minimize=/perso/components/newsabstract.jsp page./WEB.normal=/perso/components/aggregator/newsabstract.jsp page./WEB.maximize=/perso/components/aggregator/newsfull.jsp page./WEB.oneitem=/perso/components/aggregator/onenews.jsp # ###################################################################### # Pages for R380 WAP device ###################################################################### page./WAP/R380.defaultcmd=/perso/components/aggregator/minnewswml.jsp page./WAP/R380.minimize=/perso/components/aggregator/minnewswml.jsp page./WAP/R380.maximize=/perso/components/aggregator/newswml.jsp page./WAP/R380.oneitem=/perso/components/aggregator/onenewswml.jsp #
220
page./WAP/NokiaEmul.defaultcmd=/perso/components/aggregator/minnewswml.jsp page./WAP/NokiaEmul.minimize=/perso/components/aggregator/minnewswml.jsp page./WAP/NokiaEmul.maximize=/perso/components/aggregator/newswml.jsp page./WAP/NokiaEmul.oneitem=/perso/components/aggregator/onenewswml.jsp # .../... page./WAP/nokia7110.defaultcmd=/perso/components/aggregator/minnewswml.jsp page./WAP/nokia7110.minimize=/perso/components/aggregator/minnewswml.jsp page./WAP/nokia7110.maximize=/perso/components/aggregator/newswml.jsp page./WAP/nokia7110.oneitem=/perso/components/aggregator/onenewswml.jsp # .../...
Portlet commands processed by Aggregator.class The commands are shown in Table 18.
Table 18. Commands for Aggregator.class
Commands defaultcmd
Description Used when no specific command is addressed. Minimizes the component. Maximizes the component, and displays the list of news abstracts filtered out for this user. Maximizes the component, and displays the list of news details filtered out for this user. Maximizes the component, and displays one news details
minimize normal
newsabstract.jsp newsabstract.jsp
onenewswml.jsp
maximize
newsfull.jsp
newswml.jsp
oneitem
onenews.jsp
onenewswml.jsp
221
Definition package com.tivoli.tsm.perso.components; public class Aggregator extends Component; public class AggregatorComponentSession extends ComponentSession; Methods public ContentDescription getContent(String contentName) Returns the ContentDescription of one news item indexed by its content name. The ContentDescription is a utility class that describes a content: URL, title, icon URL, type,... Refer to the pTk java documentation for a complete description. public Enumeration getContentEnumeration(HttpServletRequest request) Returns an Enumeration of ContentDescription filtered out with the current user profile. The user's profile is retrieved in the request context.
222
###################################################################### # Customizor Component for TISM pTk # -----------------------------------###################################################################### # ###################################################################### # customizable parameter rules : # param.<param name>=<checkings> # <checkings>=<value>,<parameter>,... # value 1st param 2nd param # --------------------- ------------# any min length max length # letter min length max length # digit min length max length # value params # ---------------------------------------------------# list allowed words list separated by ',' # Words will be compared with String.equalsIgnoreCase() method ###################################################################### param.style=list,default,clouds,paper,bricks,green param.topics=list,politics,soccer,golf,basketball ###################################################################### # Layout rules : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### ###################################################################### # Pages for HTML devices ###################################################################### # Minimized page page./WEB.defaultcmd=/perso/components/customizor/mincustomhtml.jsp page./WEB.minimize=/perso/components/customizor/mincustomhtml.jsp # page./WEB.maximize=/perso/components/customizor/maxcustomhtml.jsp page./WEB.save=/perso/components/customizor/maxcustomhtml.jsp # page./WEB.topics=/perso/components/customizor/topicshtml.jsp # page./WEB.themes=/perso/components/customizor/themehtml.jsp # ###################################################################### # layouts for Nokia 7110 WML device ###################################################################### # ###################################################################### # Pages for WML devices ###################################################################### # # .../...
223
List of portlet commands processed by Customizor Table 19 shows the portlet commands.
Table 19. Commands for Customizor Portlet
Commands defaultcmd
Description Used when no specific command is addressed. Minimizes the component Maximizes the component Validates, and saves a parameter whose name is defined in the properties file. Then it displays the maximized view. Not processed by the service() method. It displays the topics selection form. Not processed by the service() method. It displays the themes selection form.
topics
topicshtml.jsp
themes
themehtml.jsp
Class definition package com.tivoli.tsm.perso.components; public class CustomizorComponent extends Component; public class CustomizorComponentSession extends ComponentSession; Methods public boolean exists(String name, String value) Checks if a (name,value) pair exists in the user's profile. This method can be used in a portlet JSP to propose selections with check boxes. Choices
224
already selected by the user in a previous session, are already checked in the proposed selection. public String getParameterCheckings(String parmName) It returns the edit checkings specification String specified in the properties file. e.g.:"list,default,clouds,paper,bricks,green" It can be used in a portlet JSP to retrieve and present the list of possible values for a selection.
225
Portlet commands processed by LinkSelectorComponent.class The commands are listed in Table 20.
Table 20. Commands for LinkSelectorComponent.class
Description Used when no specific command is addressed. Minimizes the component Displays the hierarchy of referenced links Goes up in the hierarchy of referenced links Saves one link from the referenced links to the personal favorite links Adds one new link to the personal favorite links Displays the user's favorite links Deletes one link from the personal favorite links Displays a form to create a new link Displays a form to create a new link
createlink7110.jsp
Class definition package com.tivoli.tsm.perso.components; public class LinkSelectorComponent extends Component; public class LinkSelectorComponentSession extends ComponentSession; Methods public Enumeration getCatEnum() Returns an Enumeration of String, which is the list of categories at the current level in the referenced links hierarchy. For each user session, there is a server-side context of where the user is in the hierarchy.
226
public Enumeration getCatIxEnum() Returns an Enumeration (LinkCategoryIxEnumeration), which is the list of categories indexes at the current level in the referenced links hierarchy. It is more efficient to access categories by their indexes than by their name. public String getCurrentCategory() Returns the name of the current category name for the user context in the referenced links repository. public Enumeration getLinkEnum() Returns the Enumeration of referenced links of the current category for the user context in the referenced links repository. public String[] getFavCategories() Returns the list of category names for the user's favorite links. public java.util.Enumeration getFavLinkEnum() Returns the Enumeration of Favorite Links for the current user. public java.util.Enumeration getFavLinkEnum(String category) Returns the Enumeration of Favorite Links of a given category for the current user. public FavoriteLinks getFavLinks(HttpServletRequest request) throws PersonalizationException Returns the FavoriteLinks Java Bean.
227
###################################################################### # Calendar Component for TSM pTk # -----------------------------------# The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> # # <device type> is specified in the device profile property "device.type" # ###################################################################### # Calendar parameters calendar.date.format=yyyy.MM.dd calendar.time.format=hh:mm:ss calendar.month.format=MMMM yyyy # ###################################################################### # Component start mode = minimized | maximized ###################################################################### # start.mode=maximized # ###################################################################### # layouts for HTML devices ###################################################################### page./WEB.defaultcmd=/perso/components/calendar/mincalendarhtml.jsp page./WEB.minimize=/perso/components/calendar/mincalendarhtml.jsp page./WEB.maximize=/perso/components/calendar/monthhtml.jsp page./WEB.currmonth=/perso/components/calendar/monthhtml.jsp page./WEB.nextmonth=/perso/components/calendar/monthhtml.jsp page./WEB.prevmonth=/perso/components/calendar/monthhtml.jsp page./WEB.currweek=/perso/components/calendar/weekhtml.jsp page./WEB.nextweek=/perso/components/calendar/weekhtml.jsp page./WEB.prevweek=/perso/components/calendar/weekhtml.jsp # ###################################################################### # layouts for Nokia 7110 WML device ###################################################################### page./WAP/nokia7110.defaultcmd=/perso/components/calendar/mincalendar7110.jsp page./WAP/nokia7110.minimize=/perso/components/calendar/mincalendar7110.jsp page./WAP/nokia7110.maximize=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.currmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.nextmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.prevmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.week=/perso/components/calendar/weekwml7110.jsp # ###################################################################### # layouts for NokiaEmul WML device ###################################################################### page./WAP/NokiaEmul.defaultcmd=/perso/components/calendar/mincalendar7110.jsp page./WAP/NokiaEmul.minimize=/perso/components/calendar/mincalendar7110.jsp page./WAP/NokiaEmul.maximize=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.currmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.nextmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.prevmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.week=/perso/components/calendar/weekwml7110.jsp
228
The following properties (see the next screen) specify the date and time format. They must comply with java.text.SimpleDateFormat specifications.
Command defaultcmd
Description Used when no specific command is addressed. Minimizes the component Opens the month view Resets the calendar to the current month Scrolls to the next month view Scrolls to the previous month view Opens the week view (WAP only)
nextmonth prevmonth
monthhtml.jsp monthhtml.jsp
monthwml7110.jsp monthwml7110.jsp
week
weekwml7110.jsp
Class definition package com.tivoli.tsm.perso.components; public class CalendarComponent extends Component; public class CalendarComponentSession extends ComponentSession;
229
Methods public String getCurrentDate() Returns the current date formatted according to the Calendar properties file. public String getCurrentTime() Returns the current time formatted according to the Calendar properties file. public int getRollingMonthWeekNbr() Returns the number of weeks in the current month. public int getDayOfMonth(int week, int dayOfWeek) Returns the position of the day in the month; 1st day of Month, 2nd day of Month,...31st day of Month. If the specified day does not belong to the current rolling month, it returns a negative value (a calendar month view often starts with the last days of the previous month, or ends with the first days of the next month). public long getTime(int day) Returns the Time (number of ms since January 1, 1970) of the specified day of Month for the current rolling month.
################################################# # Agenda Component for TSM pTk ################################################# # Agenda parameters # date format to display agenda.date.format=yyyy.MM.dd E
230
The following properties specify the default minimum and maximum hours to display in the agenda view. If an appointment starts before or after these minimum and maximum hours, the minimum and maximum values will be updated and the appointment displayed.
The following properties specify the garbage collector properties. The periodicity defines when the garbage collector must be activated in order to delete elder appointments. The appointment validity time is defined by the last properties. In this case, every six months the garbage collector is launched to delete all appointments whose start dates are more than six months ago.
############################## # For Garbage Collector ############################## #GC periodicity (in months) agenda.gc.periodicity=6 #appointment validity time (in months) agenda.gc.apptvaliditytime=6
Portlet commands processed by Agenda The commands are shown in Table 22.
Table 22. Commands for Agenda
Description Used when no specific command is addressed. Minimizes the component Opens all appointments of the current date of the agenda Prepares information to add a new appointment
addapptentry
addApptwml.jsp
231
Description Prepares information to update or delete an existing appointment Prepares information to delete an existing appointment Adds a new appointment Updates an existing appointment Deletes an existing appointment
delapptentry
delAppthtml.jsp
displayApptwml.jsp
resOK resKO
nextday
Changes the start date of agenda to the next day and updates the agenda access Bean with the appointments of this new date Changes start date of agenda to the previous day and updates the agenda access Bean with the appointments of this new date
displayAppthtml.js p
displayApptwml.jsp
previousday
displayAppthtml.js p
displayApptwml.jsp
Class definition package com.tivoli.tsm.perso.components; public class AgendaComponent extends Component; public class AgendaComponentSession extends ComponentSession;
232
Methods public com.tivoli.tsm.perso.Agenda getAgenda() Returns the agenda access Bean associated with the session. public java.util.Enumeration elements(int hour) This method returns an enumeration of appointments which have their start time between hour and hour+1. public String getDate() Returns the current date of the agenda as a string. The format of the date is defined in the configuration file. public int getStartDay() Returns the current day of the agenda (day between 1 to 31). public int getStartMonth() Returns the current month of the agenda (day between 1 to 12). public int getStartYear() Returns the current year of the agenda (1999, 2000, 2001, etc.). public Calendar getStartTime() Returns the current date of the agenda beginning at hour 00h00min00s. public int getMaxHourConfig() public void setMaxHourConfig(int newMaxHourConfig) Returns or sets the maximum hour to display in the agenda defined in the configuration file. public int getMinHourConfig() public void setMinHourConfig(int newMinHourConfig) Returns or sets the minimum hour to display in the agenda defined in the configuration file. public int getMaxHour() It returns the maximum hour displayed in the agenda. It can be bigger than the maximum hour defined in the configuration file if appointments start after the maximum defined in the configuration file. public int getMinHour() Returns the minimum hour displayed in the agenda. It can be smaller than the minimum hour defined in the configuration file if appointments start before the minimum defined in the configuration file.
233
public boolean isCommandValid() Returns true if the current command is valid. It could be false by example if the user tries to add an appointment in the past; the command is not validated and the new appointment is not added. public java.lang.String getPageCommand() A same page can be used to add, update or delete an appointment. This method returns the current command.
Command defaultcmd
234
Command minimize
Description Minimizes the component Opens all the address book entries Allows searching for an entry by the first and lastname characters Applies a filtering command by lastname Prepares information to add to a new contact. Prepares information to update or delete an existing entry Adds a new contact
maximize
search
setfilter
addentry
delupdateentry
addcommand
manageaddrbooke ntrieshtml.jsp
addaddressbooken trywml.jsp
delupdatecomman d
displayaddressboo khtml.jsp
displayaddressboo kwml.jsp
endmanageentry
Terminates a sequence of add contacts (allow to update the address book entries in DB) It cancels an add, update or delete command
displayaddressboo khml.jsp
displayaddressboo kwtml.jsp
cancelmanageentr y
displayaddressboo khtml.jsp
235
Class definition package com.tivoli.tsm.perso.components; public class AddressBookComponent extends Component; public class AddressBookComponentSession extends ComponentSession; Methods public com.tivoli.tsm.perso.AddressBook getAddressBook() Returns the address book access Bean associated with the session. public java.util.Enumeration elements() This method returns an enumeration of address book entries. public String getCategoryFilter() Returns a string with the category used for a filtering display (returns All if no category filter selected). public String getLastnameFilter() Returns a string with the lastname pattern used for a filtering display (returns All if no lastname filter selected). public com.tivoli.tsm.perso.AddressBookEntry getCurrentEntry() Returns the last address book entry added, updated, or deleted. public java.lang.String getPageCommand() The same page can be used to add, update, or delete an address book entry. The page command allows you to differentiate the treatment. This method returns this command. public boolean isLastCommandValid() Returns true if the current command is valid, and false if it fails (for example, if the user tries to add an entry that already exists).
236
public interface Filter; Methods public boolean isIncluded(String contentName, HttpServletRequest request) For each content item defined in the Aggregator property file, the Aggregator invokes the Filter API to determine if that content must be presented to that user. The first parameter contentName is the label of the content as defined in the Aggregator property file. The second parameter request gives access to the user's profiling information.
237
package com.tivoli.tsm.perso.filter; import javax.servlet.http.*; import com.tivoli.tsm.perso.*; import com.tivoli.tsm.authentication.*; /** * It is a sample Filter implementation. * It filters the contents aggregation for the sample news : * - the golf news * - the soccer news * - the basketball news * Date de cration : (06/06/00 13:35:35) * @author : Administrator */ public class SampleFilter implements Filter { public SampleFilter() { super(); } /** * Sample filtering function. */ public boolean isIncluded(String contentName, javax.servlet.http.HttpServletRequest request) { // It retrieves the NameValue pairs for the connected user // and checks if that contentName matches with one of the topics selected by the user // with the Customizor portlet try { NameValuePairs nameValues = NameValuePairs.getBean(request); // Isolate the prefix of content name (e.g. soccer_1 --> soccer) int pos = contentName.indexOf('_'); if (pos >= 0) contentName = contentName.substring (0, pos); // Check that content topic is selected in user profile if (nameValues.exists("topics", contentName)) return true; } catch (Exception ex) { Recorder.slog(ex); } return false; } }
238
It allows the portal Webmaster to define arbitrary rules that are evaluated at the beginning of each user session. Typically those rules can: Load the user's profiling data. Test any user's profile values, and other values provided by the JDK such as time and date. Perform dynamic user's grouping; if (condition), then user belongs to a group. Compute and save new properties in the user's profiling data. These properties can then be used to personalize pages. Those rules can be changed at any time. They are expressed in Java in a class that implements the Profiler interface. That class is loaded by name by the authentication Checker; its name is specified in the property files: Web devices: /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/Default Authenticator. properties WAP devices: /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/WapAu thenticator.properties The property is: authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler A sample Profiling class is provided in com.tivoli.tsm.perso.filter.SampleProfiler as shown in the next screen. Interface definition package com.tivoli.tsm.perso.filter; public interface Profiler; Methods public void createDynamicProfile(javax.servlet.http.HttpServletRequest request);
239
This method is called at each user's session start. The user's profiling data is accessible through the request object.
package com.tivoli.tsm.perso.filter; import import import import java.util.*; javax.servlet.http.*; com.tivoli.tsm.perso.*; com.tivoli.tsm.authentication.*;
/** * It is a sample Filter implementation. * It filters the contents aggregation for the sample news : * - the golf news * - the soccer news * - the basketball news * Date de cration : (06/06/00 13:35:35) */ public class SampleProfiler implements Profiler { /** * This sample Profiler applies rules to group users, * according to their age and gender. It creates 3 groups : * kids, women, men * Date de cration : (10/07/00 18:58:24) * @param param javax.servlet.http.HttpServletRequest */ public void createDynamicProfile(javax.servlet.http.HttpServletRequest request) { try { User user = User.getBean(request); NameValuePairs pairs = NameValuePairs.getBean(request); pairs.del("group"); long now = new Date().getTime(); long birth = user.getBirthDate().getTime(); long age = (now - birth) / (31557600 * 1000); String gender = user.getGender(); if ((age < 18)) { pairs.add("group", "kid"); } else if (gender.equals("F")) { pairs.add("group", "woman"); } else { pairs.add("group", "man"); } } catch (PersonalizationException ex) { } } }
240
Now the system knows who the user is and how the subscriber likes his/her homepage. Searching Yahoo This is a simple code in HTML. See the following screen.
241
<TR ID=componentbar ><TD align="center"><font color="white">Search</font></TD></TR> <TR ID=componentbckground ><TD> <FORM method=get action="http://search.yahoo.com/bin/search" target="_blanck"> <INPUT type=text name="p" size=15 height=17 maxlength=64> <INPUT type=submit value=go></TD> </FORM> </TD></TR>.
Customizor This TPSM component is used for customizing the background and the topics or themes that you want to receive in the news. See Figure 130.
The code to include in the home page is shown in the following screen.
<TR ><TD align="center"> </TD></TR> <TR><TD bgcolor="black"> <% Component.include("/perso/customizorComponent", "custom", this, request, response); %> </TD></TR>
With this step, you will have the component in the homepage. If you want to customize the topics for the news that you want to offer or the themes for the background, you will have to perform the next steps: Customizing the topics The topics are specified in the properties file, /usr/TivTSM/personal/servlet/com/tivoli/tsm/perso/components/CustomizorC omponent.properties In the bold line in the next screen, you specify the different themes that you want to offer.
242
###################################################################### # Customizor Component for TISM pTk # -----------------------------------###################################################################### # ###################################################################### # customizable parameter rules : # param.<param name>=<checkings> # <checkings>=<value>,<parameter>,... # # value 1st param 2nd param # --------------------- ------------# any min length max length # letter min length max length # digit min length max length # # # value params # ---------------------------------------------------# list allowed words list separated by ',' # Words will be compared with String.equalsIgnoreCase() method # ###################################################################### # param.style=list,default,clouds,paper,bricks,green param.topics=list,buy,finance,research,maintain # ###################################################################### # Layout rules : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # ###################################################################### # Pages for HTML devices ###################################################################### # # Minimized page page./WEB.defaultcmd=/perso/components/customizor/mincustomhtml.jsp page./WEB.minimize=/perso/components/customizor/mincustomhtml.jsp # page./WEB.maximize=/perso/components/customizor/maxcustomhtml.jsp page./WEB.save=/perso/components/customizor/maxcustomhtml.jsp # page./WEB.topics=/perso/components/customizor/topicshtml.jsp # page./WEB.themes=/perso/components/customizor/themehtml.jsp # ###################################################################### # layouts for Nokia 7110 WML device ######################################################################
This will display the selected themes in the customizer panel. See Figure 131 on page 244.
243
The next step is to specify where the news will be located by altering /usr/TivTSM/personal/servlet/com/tivoli/tsm/perso/components/AgregatorCo mponent.properties as shown in the next screen. You specify for each topic an abstract, the content, and where an image is. In the specified files, you will create the abstract and content. You have a choice on displaying this as shown in Figure 132 and Figure 133 on page 245.
244
Now, you have a news service. If you have a problem that you dont get the changes in your page, restart the personal server. Customizing the desktop themes In the next screen, the themes are specified in the AgregatorComponent.properties after the topics. Once you set this, there are a few more steps. Create a style sheet in /usr/TivTSM/personal/content/css with the same name that you specified as the theme name in the AgregatorComponent.properties. For example, if you specify a theme name as verde, then you will have in the /usr/TivTSM/personal/content/css a style sheet file called verde.css. The result is the shown in the Figure 134 on page 247 and Figure 135 on page 247.
245
###################################################################### # Aggregator Component for TISM pTk # -----------------------------------###################################################################### # # List of contents aggregated # The syntax is : # aggregator.content.<content name>=<URL> # aggregator.abstract.buy=/perso/samples/news/politics_abstract.txt aggregator.content.buy=/perso/samples/news/politics_news.txt aggregator.images.buy=/images/buy_off.gif # aggregator.abstract.finance=/perso/samples/news/basketball_abstract.txt aggregator.content.finance=/perso/samples/news/basketball_news.txt aggregator.images.finance=/images/finance_off.gif # aggregator.abstract.research=/perso/samples/news/basketball_abstract.txt aggregator.content.research=/perso/samples/news/golf_news.txt aggregator.images.research=/images/research_off.gif # aggregator.abstract.maintain=/perso/samples/news/soccer_abstract.txt aggregator.content.maintain=/perso/samples/news/soccer_news.txt aggregator.images.maintain=/images/maintain_off.gif # aggregator.abstract.sell=/perso/samples/news/euro2000_abstract.txt aggregator.content.sell=/perso/samples/news/euro2000_news.txt aggregator.images.sell=/images/sell_off.gif # ###################################################################### # Class to be provided to filter the contents to be displayed to a user # The SampleFilter works with the samples provided with TISM ###################################################################### # aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter # ###################################################################### # Pages for HTML devices ###################################################################### # # news aggregator page page./WEB.defaultcmd=/perso/components/aggregator/newsabstract.jsp page./WEB.minimize=/perso/components/newsabstract.jsp page./WEB.normal=/perso/components/aggregator/newsabstract.jsp page./WEB.maximize=/perso/components/aggregator/newsfull.jsp page./WEB.oneitem=/perso/components/aggregator/onenews.jsp
246
Logout This TPSM component is for logging out from the personalization server and TPSM. The next screen shows the code for this component.
247
<TR ><TD align="center"> </TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">Logout from portal</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=session"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center"> </TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">General Logout</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=sso"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center"> </TD></TR>
Link Selector This TPSM component allows the user to create links to the subscribers favorite places on his/her homepage. The subscriber manages the links by him/herself. See the code in the next screen and the results in Figure 136, Figure 137 on page 249, and Figure 138 on page 249.
<TR><TD align="center"> <% comp = (ComponentDescription) comps.get("links"); if (comp != null) comp.include(this, request, response); %> </TD> </TR>
248
If you want to personalize the layout of the LinkSelector, go to /usr/TivTSM/personal/content/component/linkselector and choose the file that you are using. Calendar This TPSM component is a calendar as shown in Figure 139 on page 250. The code to include it in the personalized homepage is shown in the next screen.
<TR><TD align="left" width="90%"> <% comp = (ComponentDescription) comps.get("calendar"); if (comp != null) comp.include(this, request, response); %> </TD> </TR>.
249
Agenda The Agenda is a TPSM component (see the Figure 140 on page 251) that you can add to your personalize homepage with the code shown in the following screen.
<TR><TD align="center"> <% comp = (ComponentDescription) comps.get("agenda"); if (comp != null) comp.include(this, request, response); %> </TD> </TR>
250
ComponentSelector This TPSM component permits the subscriber to customize the applications that he/she wants to have in his/her homepage. An example of the code to add to a homepage is shown in the next screen. Later on, we are going to explain how to add new applications to the ComponentSelector.
Figure 141 on page 252 shows what the ComponentSelector looks like on a homepage.
251
To add a new external application that can be chosen by the user, follow these steps: 1. Edit the file ComponentSelectorComponent.properties of the directory /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/component as shown in the following screen. 2. Add the next lines for your new external application, see the bold code as our example. The first thing that you have to do is to decide what name are you going to give to the application, for instance, mail, to identify the properties in the file a. Label of application to appear in the homepage as description b. Name application.label.mail=My Mail c. Icon that you are going to use and location:
application.icon.mail=/images/yahoo.gif
3. Stop and restart the personalization server. 4. Try your homepage as shown in Figure 142 on page 256 and Figure 143 on page 256. The code for ComponentSelectorComponent.properties is as follows:
252
###################################################################### # Application Selector Component for TISM pTk # -----------------------------------# # List of applications managed by the ComponentSelector # # The syntax is : # --------------# application.label.<application name>=<application label> # application.icon.<application name>=<application icon URL> # application.componenturl.<application name>=<component URL> # this parameter is required for components # application.iconclickurl.<application name>=<Click URL for the icon> # this parameter is optional : when present, the component icon is clickable # application.devicetype.<application name>=<device_type> # where <device_type> = /WEB, /WAP or / for all devices ###################################################################### # Calendar : Example of application which entry point is a component (servlet) # it is referenced by the URI path of its servlet alias # application.label.calendar=My Calendar application.icon.calendar=/images/calendar.gif application.componenturl.calendar=/perso/calendarComponent application.iconclickurl.calendar= application.devicetype.calendar=/ # ###################################################################### # Agenda : Example of application which entry point is a component (servlet) # it is referenced by the URI path of its servlet alias # application.label.agenda=My Agenda application.icon.agenda=/images/agenda.gif application.componenturl.agenda=/perso/agendaComponent application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximize application.devicetype.agenda=/ # ###################################################################### # Link Selector : Example of application which entry point is a component (servlet) # it is referenced by the URI path of its servlet alias # application.label.links=My Favorite Links application.icon.links=/images/world.gif application.componenturl.links=/perso/linkSelectorComponent application.iconclickurl.links= application.devicetype.links=/ # ###################################################################### # Address book Example of application which entry point is a JSP # It is referenced by the JSP URI path used in a tag <a href="..."></a> # application.label.addressBook=My Address Book application.icon.addressBook=/images/addrbook.gif application.componenturl.addressBook=/perso/addressBookComponent
253
application.iconclickurl.addressBook=/perso/home?layout=addrbook&addressBook=maximi ze application.devicetype.addressBook=/ # ###################################################################### # Example of aggregation content # application.label.news=The News application.icon.news=/images/news.gif application.componenturl.news=/perso/news application.iconclickurl.news=/perso/home?layout=home&news=maximize application.devicetype.news=/ # ###################################################################### # Example of an external link with macrosubstitution using the user's profile # This type of link has no component URL # application.label.weather=My Weather application.icon.weather=/images/weather.gif application.componenturl.weather= application.iconclickurl.weather=http://search.weather.yahoo.com/weather/query.cgi? q=*getCity* application.devicetype.weather=/WEB # ###################################################################### # Example of an external link with macrosubstitution using the user's profile # This type of link has no component URL # application.label.mail=My Mail application.icon.mail=/images/yahoo.gif application.componenturl.mail= application.iconclickurl.mail=http://mail.yahoo.com application.devicetype.mail=/WEB ###################################################################### # # Component JSP's : dispatched according to (deviceType, componentCommand) # ###################################################################### # Pages for HTML devices # ---------------------# The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # # Startup mode: defaultcmd --> maximized for WEB devices page./WEB.defaultcmd=/perso/components/componentselector/myapplihtml.jsp # # Minimized page page./WEB.minimize=/perso/components/componentselector/minapplihtml.jsp # # Page with my applications page./WEB.maximize=/perso/components/componentselector/myapplihtml.jsp page./WEB.myappli=/perso/components/componentselector/myapplihtml.jsp page./WEB.add=/perso/components/componentselector/myapplihtml.jsp page./WEB.delete=/perso/components/componentselector/myapplihtml.jsp #
254
# # Page with other available applications page./WEB.customize=/perso/components/componentselector/customapplihtml.jsp # ###################################################################### # layouts for WAP devices ###################################################################### # # Startup mode for WAP devices : defaultcmd --> minimized page./WAP/R380.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/R380.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/R380.add=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/NokiaEmul.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/NokiaEmul.add=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/nokia7110.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/nokia7110.add=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/R320.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/R320.add=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.myappli=/perso/components/componentselector/myappliwml.jsp # .../...
255
The whole code for the entire page with all components installed is shown in the next screen.
256
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.t ext.*" %> <% User user = User.getBean(request); NameValuePairs pairs = NameValuePairs.getBean(request); String first, second, address1; try{ first = user.getFirstName(); second = user.getLastName(); address1 = user.getAddress1(); }catch(Exception e) { System.out.println(e); } // Compute style sheet String style[] = pairs.getValues("style"); String css = "default"; if (style.length >= 1) css = style[0]; %> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <TITLE> TSM Personal page </TITLE> <LINK rel="stylesheet" href="/perso/css/<%=css%>.css" type="text/css"> </head> <BODY text="#000000" link="#000000" vlink="#000000" alink="#000000"> <TABLE border="0" cellspacing="0" cellpadding="0" > <tr> <TD><IMG width="250" height="190" src="/images/autoclub.gif" ALT="Auto Club" border="3" ></TD> <TD ><IMG width="750" height="50" src="/images/spacer.gif" ></TD> <TD><IMG width="250" height="190" src="/images/ah1.gif" ALT="Auto Club" border="3" ></TD> </TR> <tr> <td> </TABLE> <TABLE border="0" cellspacing="0" cellpadding="0" width="100%"> <TR> <TD valign="top" align="left"> <!----------- PAGE LEFT column ---------------------------> <TABLE border="0" cellspacing="0" cellpadding="0" width="250"> <!----------- Search form to Yahoo ---------------------------> <TR ID=componentbar ><TD align="center"><font color="white">Search</font></TD></TR> <TR ID=componentbckground ><TD> <FORM method=get action="http://search.yahoo.com/bin/search" target="_blanck"> <INPUT type=text name="p" size=15 height=17 maxlength=64> <INPUT type=submit value=go></TD> </FORM> </TD></TR>
257
<!----------- Calendar
--------------------------->
<% Hashtable comps = ComponentSelectorComponent.getComponents("comps", request); ComponentDescription comp; %> <!----------- Customizor ---------------------------> <TR ><TD align="center"> </TD></TR> <TR><TD bgcolor="black"> <% Component.include("/perso/customizorComponent", "custom", this, request, response); %> </TD></TR> <!----------- Logout -----------------------------------> <TR ><TD align="center"> </TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">Logout from portal</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=session"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center"> </TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">General Logout</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=sso"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center"> </TD></TR> <!----------- Links selector ---------------------------> <TR><TD align="center"> <% comp = (ComponentDescription) comps.get("links"); if (comp != null) comp.include(this, request, response); %></TD> </TR> <TR ><TD align="center"> </TD></TR>
<tr><td> </td></TR> <TR ID=componentbar ><TD align="center"><font color="white">Cars Trade Marks</font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.bmw.com">BMW</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.ferrari.com">Ferrari</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.ford.com">Ford</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.gm.com">General Motors</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.hyundai.com">Hyundai</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.honda.com">Honda</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.mercedes.com">Mercedes</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.nissan.com">Nissan</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.renault.com">Renault</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.seat.com">Seat</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.toyota.com">Toyota</a></font></TD></TR>
258
<TR><TD align="left"><font color="black"><A HREF="www.vw.com">Volkswagen</a></font></TD></TR> </TABLE> </TD> <!----------- PAGE RIGHT column ---------------------------> <TD valign="top" align="left" > <TABLE border="0" cellspacing="5" cellpadding="0"> <!----------- Promotional banner : could be done with Aggregator component too ---------> <% // Include promotional banner for kid // The property group=xxx is set by the SampleProfiler at user session start if (pairs.exists("group", "kid")) { %> <TR><TD align="center" valign="top" width="90%"> <A HREF="http://www.toysrus.com/"><IMG BORDER="0" SRC="/images/toys.jpg"></A> </TD></TR> <% } %> <% // Include promotional banner for men if (pairs.exists("group", "man")) { %> <TR><TD align="center" valign="top" width="90%"> <A HREF="http://www.ferrari.it/"><IMG SRC="/images/car.jpg"></A> </TD></TR> <% } %> <% // Include promotional banner for woman if (pairs.exists("group", "woman")) { %> <TR><TD align="center" valign="top" width="90%"> <A HREF="http://www.ferrari.it/"><IMG SRC="/images/elle.gif"></A> </TD></TR> <% } %> <TR ID=componentbar ><TD align="center" WIDTH="500"> <H2><font color="#FFFFFF">Welcome <%=user.getFirstName() %> </font></H2> </TD></TR> <!----------- News : presented by Aggregator component ---------> <TR><TD align="left" valign="top" width="90%"> <% // Include news filtered by user prefered topics comp = (ComponentDescription) comps.get("news"); if (comp != null) comp.include(this, request, response); else { %> <H3>Please subscribe to the news...</H3> <BR> Click on the top left box 'My applications' to select the news. <%
259
} %> </TD></TR> <tr><td> </td></tr> </TABLE> </TD> <!----------- PAGE LAST column ---------------------------> <td> <TABLE> <!--------------------Aplications--------------------------> <TR><TD> <!----------- Component selector ---------------------------> <% Component.include("/perso/componentSelectorComponent", "comps", this, request, response); %> </TD></TR> <!--------------------Calendar--------------------------> <TR><TD align="left" width="90%"> <% comp = (ComponentDescription) comps.get("calendar"); if (comp != null) comp.include(this, request, response); %> </TD> </TR> <!----------------------Agenda-------------------------> <TR><TD align="center"> <% comp = (ComponentDescription) comps.get("agenda"); if (comp != null) comp.include(this, request, response); %> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </BODY> </HTML> . .
260
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <%@ page import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %> <%@ page contentType="text/vnd.wap.wml" import="java.util.*,java.text.*,com.tivoli.tsm.perso.*"%> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <!-- Source Generated by WML Deck Decoder --> <%@ page buffer="none" import="com.tivoli.tsm.perso.components.*,com.tivoli.tsm.perso.*,java.util.*" %> <% LayoutComponentSession layout = (LayoutComponentSession) LayoutComponentSession.getSession(request); %> <wml> <template> <do type="prev" name="back" label="Back"> <prev/> </do> <do type="accept" name="nav1" label="Service Menu"> <go href="<%=layout.href(response)%>"> <postfield name="currentComponent" value="comps"/> <postfield name="comps" value="myappli"/> </go> </do> </template> <% String currentComponent = layout.getCurrentComponent(); // If no previous value, set to component selector if (currentComponent == null) currentComponent = "comps"; if (currentComponent.equals("comps")) Component.include("/perso/componentSelectorComponent", currentComponent, this, request, response); else { // Component.include("/perso/componentSelectorComponent", "comps", this, request, response, "minimize"); Hashtable comps = ComponentSelectorComponent.getComponents("comps", request); ComponentDescription comp = (ComponentDescription) comps.get(currentComponent); if (comp != null) comp.include(this, request, response); } %></wml>
261
This code redirects the subscriber when it detects that he or she has not been authenticated before. See the code in Section 9.9.1.1, Implementation on page 241. The rest of the code is for using the TPSM component, ComponentSelectorComponent. Add other components just as we did for HTML. To see the results, see Figure 88 on page 144.
262
10.1 Overview
Tivoli Personalized Services Manager can host several stand-alone ISPs (virtual ISPs) each with its own brand name and unique identity without any degradation in response time or processing efficiency. Bulk transfers of subscriber bases can be accomplished programmatically, allowing ISPs to purchase existing subscriber populations and quickly add them to the ISP's business. Businesses can own and operate a virtual ISP within the Tivoli Internet Services Manager base system. Virtual ISPs operate as distinct entities separately branded with a unique realm name (e.g., acme.com) Virtual ISPs can configure the Tivoli Internet Services Manager enrollment screens to display their logo, and offer their billing plans and payment options. Access codes used during enrollment to trigger the proper enrollment screens and enrollment options from the Tivoli Internet Services Manager system base. Also, virtual ISPs can create a unique home page to support their company's identity. The Internet Signup file (INS file) created at the end of enrollment and downloaded to a subscriber's PC will configure the subscriber's browser to use the virtual ISP's settings (for home page, e-mail and newsgroup settings). Virtual ISPs can configure Tivoli Internet Services Manager's Customer Care component to conform to their company's identity and support their subscriber's needs, and can offer special business accounts within the ISP. These business accounts can have their own subscribers A variety of APIs allow Tivoli Personalized Services Manager to integrate nearly any Internet component that meets industry standards to provide diverse functionality and follow new trends in Internet interaction.
263
10.2 REALMs
Realms are a division of the subscriber name-space that allow the ISP to divide its Internet provisioning services, effectively creating a set of Virtual ISPs. Tivoli Personalized Services Manager can support several realms for its virtual ISPs. For example: allConsumers.com smallBusiness.com importantCustomer.com Virtual ISPs can use the Tivoli Personalized Services Manager enrollment process to enroll their own subscribers but maintain management control over enrollment channels, access codes, deals, subscriber names, and e-mail addresses as shown in Figure 144. Realms can have consolidated or separate billing systems.
With a delegated REALM administration, TISM provides a configurable way to limit the realms that Customer Service Reps (CSRs) can access.
264
This allows CSRs to use the full functionality of the Customer Care application, but limits their access to some or all realms within Tivoli Internet Services Manager.
265
Every subscriber enrolled with the ISP named "Beta" would get a user name and e-mail address unique to "beta.com" (John@beta.com, Mary@beta.com, etc.).
266
Optionally, you can create a property for the deal, refer to Chapter 5.1.6, Creating a property on page 87 Associate the Deal with the Realm, refer to Chapter 5.1.7, Associating the deals with the Realm on page 90 Associate the Access Code with the Deal, refer to Chapter 5.1.8, Associating the Access Codes with the deals on page 92 Also, we need to add CSRs to each one of the Virtual ISPs, please refer to Chapter 7, Using Customer Care and Director Tool on page 149.
267
268
269
Around the database primary business and transaction objects are available that provide access to the database in a uniform and consistent way without having to code the actual SQL statements that are needed. See Figure 146.
Using JDBC, the specific details of the database are hidden from higher level objects. This makes it easier to change databases because it provides isolation from different database management systems like DB2, Oracle, etc. JDBC separates the database server from the business object server, and even facilitates an evolution to a distributed database. A set of high level, business oriented objects provide simple ways to perform complex business transactions. In turn, the high-level business objects are built around the simpler, table oriented business objects.
270
1. Form based browser This is the most lightweight type of client possible. An unmodified (no plug-in) version of Internet Explorer, Netscape Navigator, or any other type of Web browser accesses a Web server. Behind the Web server, a servlet engine verifies input submitted with HTML form fields and prepares the pages to be sent to the browser. The servlet engine communicates with the business logic server and prepares HTML to be sent to the browser using Java Server Pages. This approach has major advantages over older technologies like CGI (Common Gateway Interface) or Server Side Plugins. First, the Java language used in the servlet engine guarantees the uniformity of one platform. Second, the portability of the Java language enables deployment on different platforms with different types of servlet engines. Lastly, the presence of the servlet engine avoids the costly generation of a new process with every HTTP request as required by CGI type interfaces. With this model, the servlet engine contains iTk object stubs if RMI is used. If RMI is not used the objects contained in the
271
business logic server will run in the Java Virtual Machine (JVM) of the servlet engine. 2. Java Applets This solution allows deploying business code on the browser without the need of software installation. A Java applet is downloaded from the server when the browser accesses a specific webpage. The code is dynamically loaded into the Java Virtual Machine on the client and is launched once the download is completed. This model does not require any software installation and guarantees easy updates of software because only the server needs to be updated. The applet can communicate directly with the business logic, or an intermediate server can be introduced in between. With this approach, the Java applet contains iTk object stubs if RMI is used. Otherwise, the objects contained in the business logic server will run in the same JVM as the applet. 3. Third party applications In some cases customers want to integrate Tivoli Internet Services Manager in their core applications. In this case, access to the Tivoli Internet Services Manager services through a browser or Web server is not convenient. Instead, customers would like to write programs that access Tivoli Internet Services Manager directly, through well-known interfaces. In this model, iTk object stubs are contained in the third party application if RMI is used. Otherwise, the business logic server code will run in the same JVM as the third party application.
272
The iTk permits the integration of applications without knowing the structure of the database tables. Some examples of what the iTk core classes do are:
273
Manage TSM Transactions. The action of creating a new subscriber is represented as one transaction. Because there are several database updatesm, if any fail, the database rolls back to avoid corruption. Connect to the database. Generate SQL commands dynamically. Providing a common interface to retrieve data. Utility function as debug or trace. Validate values set by an application. Manage exceptions. There are objects oriented to transactions in the database, such as Transaction, TransactionConfig, TransactionFactory, TxCursor, TxException, and TxWhereClause. These classes are not accessible to the applications, and are only explained to understand the architecture: DbConnectionMgr Manages and retains database connections. SqlGenerator Creates your own SQL statements dynamically. It optimizes updates and validation of data. Trace Generic class used for tracking the progress and completion of methods. It generates three types of methods; information, error, and warning. TraceResources Provides NLS support on tracing/logging. TxObject The base for all transaction objects. Defines the methods described in the Transaction interface and provides a default implementation. It also takes care of transaction management and failures. TxSqlContext Holds the resources that are reserved by a TxCursor Object. TxValue Encapsulates all objects and Java primitive types that are set to the fields of TxObject. TxValue object can also store the TxWhereClause object.
274
TxValues Developed to improve the performance of retrieving data with RMI. Validator Allows applications to perform some simple validation of user input locally.
This set of methods wont be described in this redbook. NOTE: The table primary keys are always set as select field. The reason is that the iTk is always prepared for an update or delete after a read statement, and the keys are used to build the where clause because its faster to update or delete an entry from the table based on keys . 2. set <attributeName>|get<attributeName> methods: All Tivoli Internet Services Manager Business Objects implement this category of methods. It sets and gets attributes from the object.
275
Code Example: to set and get realm name from Realm object:
setRealmName(Tivoli); String db_realm_name= getRealmName();
These methods wont be described in this redbook. 3. Database related methods: All Tivoli Internet Services Manager Business Objects derive from TxObject, and implement the following methods. Note: Additional specific methods will be described within the specific Tivoli Internet Services Manager Business Object. a. count(): Returns the number of entries in the database that matches the specified criteria. b. create(): Creates the object in the database. NOTE: A few Tivoli Internet Services Manager Business Objects do not allow creation. c. delete(): Deletes one or more entries from the database. d. NOTE: This method is not available for all classes because not all Tivoli Internet Services Manager objects are programmatically deletable. e. read(): Retrieves all entries from the database that match the specified criteria f. update(): Updates one or more entries in the database. NOTE: A few Tivoli Internet Services Manager Business Objects do not allow update.
276
12.1 Overview
Device Manager is software that helps service providers manage their subscribers devices. In this chapter, the term devices means information appliances, such as personal digital assistants (PDAs), handheld PCs, subnotebooks, smartphones, wireless access protocol (WAP) devices, set-top boxes, in-vehicle information systems, and other emerging devices for pervasive computing. You use the Device Manager as a part of Tivoli Personalized Services Manager (TPSM). The Tivoli Personalized Services Manager provides a completely integrated infrastructure of software components for internet service provisioning. The purpose of Device Manager is to extend the functionality of the required subscription manager product to include management of devices and their related resources, like device application software. Device Manager must work in conjunction with either Tivoli Personalized Services Manager or another subscription manager product whose enrollment application meets the requirements. Device Manager also requires a relational database. All job and device information is stored in tables in this database. The relational database is a required product, not a component. The subscription manager product and Device Manager share the same database. Device Manager uses Java technology. Its servers run on IBM AIX operating system or Sun Solaris environments. It uses a global, relational database for data storage. UDB and Oracle8 are supported with DMS v1.1. Its administration clients run in Microsoft Windows operating system environments, where the Device Manager console for administrators is deployed. Device Manager can be installed as a single-server environment or, for larger user and device numbers, as a multi-server environment with a network dispatcher as the front end. Using a network dispatcher as a load balancer, you can keep scalability and high availability for a number of Device Manager servers.
277
278
Device plug-ins Device management server API Device Manager database Device management API Device Manager console We describe the functions of each component in this section.
279
The DMS servlet interacts with the device management API to get information such as the home Device Manager server from the Device Manager database. It also uses DM API to update the database after successful completion of a job.
280
configuration). This piece is created by the plug-in developer by implementing the DeviceJob interface. 4. An optional template file that describes the set of device parameters such as the IP gateway or domain name server used, that are required by all devices of the same device class, to support many different kinds of devices and jobs. Device plug-ins provide the actual implementation logic for devices managed by the Device Manager. Device plug-ins implement the logic described in 1. and 2. as the Device Class layer. It defines a set of methods to perform low-level primitive operations on the device. The Job Class layer implements high-level management tasks, which is described in 3. It performs management tasks by invoking the methods of the Device Class layer.
281
The Device Manager database is accessed using the device management API. This API updates all records in the Device Manager database that are related to each other. Therefore, Device Management Server servlets, the Device Manager console, and all external applications such as subscription managers and billing systems should use the device management API to access the Device Manager database. The Subscription Manager and Device Manager databases reside in the same database. However, they use different tables that have no relation between them. For additional information about these tables, see the Device Manager: Developer's Guide, which is shipped on the TPSM CD.
282
The SM component of TPSM uses the DM API to define, configure, and schedule jobs for new devices enrolled through the enrollment application. In addition, Customer Care or Self Care applications can be written to enable customer service representatives (CSRs) or customers to view or manage devices within their scope of control.
283
Administrators submit these jobs to update the configuration of devices (including network parameters), distribute new or updated software applications to devices, and update device rest pages with, for example, timely new information from the service provider. Administrators can initiate a new job of an available job type and target it to: All devices All devices of a device class All devices in a realm, a deal, or both One or more selected devices Other typical administrator tasks include the following: Viewing device jobs and their status. Canceling jobs. Identifying and configuring a newly deployed device, including associating the device with its owner. Obtaining and displaying information about the software Device Manager has distributed to a device, and the configuration parameters it has set for a device.
284
service provider. Tivoli Personalized Services Manager Device Manager controls the distribution of rest pages to devices. APIs The device management API allows device and related information to be maintained in the Device Manager database and available for use by external applications, Device Manager servers, and administrative clients. The Device Management server API allows for configuration and distribution requests to be queued for distribution to devices. The Device Management server API also allows DMS servlet and device plug-ins to communicate as see in Table 24.
Table 24. DM functions and device plugins matrix
Palm Enrollment Device Config Software Distribution Restpage Support APIs Supported Supported Supported N/A Supported
285
286
A built-in smart card reader Pocket e-mail The Aero 8000 can be pre-configured for Device Manager by a service provider. The consumer has quick access to the Internet through the Pocket Internet Explorer browser. For more about the Aero 8000, see the Compaq Web site. See http://www5.compaq.com/products/handhelds/8000/ The Device Manager software includes a device plug-in for the Aero 8000 and its agent program. The Aero 8000 plug-in installs with the Device Manager software. The communication protocol between the Aero 8000 plug-in and its agent program is based on the HTTP protocol. The device agent program works only as an HTTP client.
287
The NetVista Internet Appliance also includes: A unique ID, such as serial number or NIC ID The PvC client stack The ability to handle special HTTP messages from the enrollment program for starting the system management agent after the enrollment is complete Support for HTTP redirection Support for SSL For more information about the NetVista Internet Appliance, see the NetVista Web site: http://www.pc.ibm.com/us/netvista/index.html
288
installs with the Device Manager software. The communication protocol between the Windows CE plug-in and the Windows CE agent program is based on the HTTP protocol. The device agent program works only as an HTTP client.
289
290
291
that the same or similar results will be obtained elsewhere. Customers attempting to adapt these techniques to their own environments do so at their own risk. Any pointers in this publication to external Web sites are provided for convenience only and do not in any manner serve as an endorsement of these Web sites. The following terms are trademarks of the International Business Machines Corporation in the United States and/or other countries:
e (logo) Netfinity Redbooks RS/6000 System/390 WorkPad IBM NetVista Redbooks Logo SecureWay WebSphere
The following terms are trademarks of other companies: Tivoli, Manage. Anything. Anywhere.,The Power To Manage., Anything. Anywhere.,TME, NetView, Cross-Site, Tivoli Ready, Tivoli Certified, Planet Tivoli, and Tivoli Enterprise are trademarks or registered trademarks of Tivoli Systems Inc., an IBM company, in the United States, other countries, or both. In Denmark, Tivoli is a trademark licensed from Kjbenhavns Sommer - Tivoli A/S. C-bus is a trademark of Corollary, Inc. in the United States and/or other countries. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and/or other countries. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States and/or other countries. PC Direct is a trademark of Ziff Communications Company in the United States and/or other countries and is used by IBM Corporation under license. ActionMedia, LANDesk, MMX, Pentium and ProShare are trademarks of Intel Corporation in the United States and/or other countries. UNIX is a registered trademark in the United States and other countries licensed exclusively through The Open Group.
292
SET, SET Secure Electronic Transaction, and the SET Logo are trademarks owned by SET Secure Electronic Transaction LLC. Other company, product, and service names may be trademarks or service marks of others.
293
294
295
296
Fax Orders United States (toll free) Canada Outside North America 1-800-445-9269 1-403-267-4455 Fax phone number is in the How to Order section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl
This information was current at the time of publication, but is continually subject to change. The latest information may be found at the Redbooks Web site. IBM Intranet for Employees IBM employees may register for information on workshops, residencies, and Redbooks by accessing the IBM Intranet Web site at http://w3.itso.ibm.com/ and clicking the ITSO Mailing List button. Look in the Materials repository for workshops, presentations, papers, and Web pages developed and written by the ITSO technical professionals; click the Additional Materials button. Employees may access MyNews at http://w3.ibm.com/ for redbook, residency, and workshop announcements.
297
First name Company Address City Telephone number Invoice to customer number Credit card number
Last name
Card issued to
Signature
We accept American Express, Diners, Eurocard, Master Card, and Visa. Payment by credit card not available in all countries. Signature mandatory for credit card payment.
298
Glossary
Aero 8000 The Compaq Aero 8000 Handheld PC, which is a kind of Windows CE machine. It uses Hitachi SH4 processor and has a 10-inch color SVGA screen with 800 x 600 resolution, 256 colors, and a 0.24 pixel pitch. AIX Advanced Interactive eXecutive. An IBM industrial-strength version of UNIX. API Application program interface. ASP Application Service Provider. An Internet service provider that offers application services. business object An object containing business methods (logic) and state that is intended for use within business applications. Business objects are Managed Objects. In some contexts, the term business object in this book is used to refer to a business object class. It may also be used to refer to a composition of business object classes. Challenge Handshake Authentication Protocol (CHAP) A type of authentication in which the authentication agent (typically a network server) sends the client program a key to be used to encrypt the username and password. CHAP See Challenge Handshake Authentication Protocol. conduit A component of Palm Desktop software. A conduit specifies how to transfer and translate data between your handheld and your computer for a specific handheld application or database during a Hot Sync operation. cradle The docking station for PDA devices to connect to the desktop PC. Generally, they also have the function to charge the device. DBCS Double byte character set. DDL Data Definition Language. deal Deals represent the service plan that is being subscribed to. Device management API An API (package com.tivoli.dms.dmapi) that defines the programming interface for manipulating the device- and job-related data resources stored in the Device Manager database. Device management server API An API (package com.tivoli.dms.dmserver) that defines the programming interface between the device management server servlet and the device plug-ins. Device Manager console A graphical user interface, written by Java, for administering device management operations. DHCP See Dynamic Host Configuration Protocol. DM Device Manager. DM console see Device Manager console. DMD Device Management Dispatcher. DMS servlet Device management server servlet. DNS See Domain Name System. Domain Name System (DNS) A function to associate names and addresses on Internet domain servers. Dynamic Host Configuration Protocol (DHCP) A protocol for assigning dynamic IP addresses to devices on a network. e-business A term used by IBM to describe the use of Internet technologies to transform business processes. In practice, this means using Internet clients, such as Web browsers, as front ends for applications that access back-end legacy systems to allow greater access. See http://www.software.ibm.com/ebusiness for more information. eXtensible Markup Language (XML) This markup language, a streamlined version of SGML, is regulated by WC3 (the World Wide Web Consortium). Can create more advanced links than HTML.
299
file package Describes which files and directories to distribute and how to distribute them. file package definition file An ASCII file that identifies the contents and characteristics of a file package. File Transfer Protocol (FTP) The protocol used for sending files over the network. FTP See File Transfer Protocol. GUI Graphical User Interface. HACMP High Availability Cluster Multi-Processing. HotSync A Palm function to do two-way synchronization of records between your handheld and your computer. Changes that you make on your handheld or your computer are updated on both platforms after a HotSync operation. The HotSync operation only synchronizes the changed portions of data, reducing HotSync time. HTTP See Hyper Text Transmission Protocol. Hyper Text Transmission Protocol (HTTP) The communications protocol used to connect to servers on the World Wide Web. Its primary function is to establish a connection with a Web server and transmit HTML pages to the client browser. IBM International Business Machines. IMAP See Internet Message Access Protocol. Integrated Services Digital Network (ISDN) An international communications standard for sending voice, video, and data over digital telephone lines and normal telephone wires. Internet Message Access Protocol (IMAP) A protocol for retrieving e-mail messages. Internet screenphone A telephone-like appliance with a built-in display screen that may be used to call up Internet sites quickly. Internet Service Provider (ISP) Offers services on the Internet, such as connection services. ISDN See Integrated Services Digital Network. ISP See Internet Service Provider.
iTk Tivoli Internet Services Manager Integration Toolkits. Java A high-level programming language developed in 1991 by Sun Microsystems that works on virtually any computer. Unlike HTML, which is a document display format that is continually improved to make it do more, Java is a full-blown programming language like C and C++. It allows for the creation of sophisticated client/server applications to be developed for the Web and for intranets. Java Database Connectivity (JDBC) A Java API that allows Java programs to communicate with different database management systems in a platform-independent manner. Database vendors provide JDBC drivers for their platforms that implement the API for their database, allowing the Java developer to write applications to a consistent API no matter which database is used. Java Development Kit (JDK) A software development kit (SDK) for producing Java programs. JDBC See Java Database Connectivity. JDK See Java Development Kit. kiosk services Solutions for business center service providers such as hotel chains, airports, and office service franchises that offer document services (storing, reproduction, and distribution) through shared access devices in public spaces. LAN See Local Area Network. LDAP See Lightweight Directory Access Protocol. Lightweight Directory Access Protocol (LDAP) A set of protocols for accessing information directories. LDAP is based on the X.500 protocol, but supports TCP/IP, which is necessary for Internet access. Because it's a simpler version of X.500, LDAP is sometimes called X.500-lite. Local Area Network (LAN) A computer network that spans a relatively small area, such as a building or a group of buildings. meta file definition file An ASCII file that provides software distribution properties for the
300
job. It also has a numbered application stanza, [Applicationn], for each application package in the software distribution job. NetVista The IBM NetVista system includes all-in-one, legacy-free, traditional desktops and thin clients to provide a full range of computing solutions for your business or home. Palm OS platform A popular operating system for Palm and other handheld devices, designed by Palm specifically for information management. Palm Pilot One of the most popular brands of PDAs, which uses Palm OS provided by Palm, Inc. Nowadays, 3Com, IBM, Sony, and some other vendors sell original Palm Pilot devices. Palm OS resource database Commonly referred to as a PRC (Palm Resource). A PRC can exist as a file on the host computer (that is, a PC or a Macintosh) and is commonly referred to as a PRC file. A PRC contains database header information as well as individual resource records in the database itself. Palmscape Palmscape is a Web browser for PDA. Palm version of Palmscape works on the Palm OS 3.0 and above. PAP See Password Authentication Protocol. Password Authentication Protocol (PAP) The most basic form of authentication in which a user's name and password are transmitted over a network and compared to a table of name-password pairs. PDA See Personal Digital Assistant. PDB PDB files contain database records that are used by Palm OS to store the application data. They have features unique to the Palm OS. Personal Digital Assistant (PDA) A small handheld device that offers functions such as address storage, calendar, and e-mail. This mobile device can be synchronized with desktop PCs. Point-to-Point Protocol (PPP) A data link protocol that provides dial-up access over several lines. POP See Post Office Protocol.
Portal Toolkit (pTk) A toolkit that features a Multi-device portal engine thata supports web devices such as Win CE based PDAs, screenphones, and WAP devices as well as PCs. It also features a User Preference API, which allows user and user group profiling. Post Office Protocol (POP) A protocol used to retrieve e-mail from a mail server. PPP See Point-to-Point Protocol. PRC Palm Resource. See Palm OS resource database. proxy A proxy server is configured to manage network traffic and to protect your network. PSTN See Public Switched Telephone Network. PTF Problem temporary fix. pTk See Portal Toolkit. Public Switched Telephone Network (PSTN) The international telephone system based on copper wires carrying analog voice data. This is in contrast to newer telephone networks based on digital technologies such as ISDN and FDDI. RADIUS Remote Access Dial-In User Service. RAM disk Refers to RAM that has been configured to simulate a disk drive. You can access files on a RAM disk as you would access files on a real disk. RAS Short for Reliability, Availability, Serviceability. See Remote Access Services. Realm Realms are a division of the subscriber name-space that allow the ISP to divide its Internet provisioning services, effectively creating a set of Virtual ISPs. Remote Access Services (RAS) A feature built into Windows NT that enables users to log into an NT-based LAN using a modem, X.25 connection, or WAN link. screenphone See Internet screenphone. servlets Java classes that run on Web servers to provide dynamic HTML content to clients. They take as input the HTTP request from the client and output dynamically generated HTML. For more information on servlets, see
301
http://www.software.ibm.com/ebusiness/ pm.html#Servlets Simple Mail Transfer Protocol (SMTP) A protocol for sending e-mail messages between servers. SM See Subscription Manager. smart phone Enables connections to the Internet or Lotus Notes network so that users can access e-mail, faxes, voice mail, Web pages, and other files. It also has the potential to connect to a speech recognition server by phone, which would allow a user to dictate notes or responses and then see the recognized text as it is returned from the server. SMTP See Simple Mail Transfer Protocol. Solaris A UNIX-based operating environment developed by Sun Microsystems. Originally developed to run on Sun's SPARC workstations, it now runs on many workstations from other vendors. Solaris includes the SunOS operating system and a windowing system (either Open Windows or CDE). SQL See Structured Query Language. SSL Secure Sockets Layer. A protocol for transmitting private documents securely via the Internet. Structured Query Language (SQL) A standard set of statements used to manage information stored in a database. By using these statements, users can add, delete, or update information in a table, request information through a query, and display the result in a report. Subscription Manager (SM) A feature of the Tivoli Internet and Personalized Services Manager: Programmers Guide, which has functions such as enrollment, access control, and personalization. TCP/IP Transmission Control Protocol/Internet Protocol. TISM Tivoli Internet Services Manager. TPSM Tivoli Personalized Services Manager. transcoding The operation of changing data from one format to another, such as XML to
HTML, so that the output will be displayed in a manner appropriate to the device. TSM Tivoli Subscriber Manager. UDB DB2 Universal Database from IBM. URL Universal Resource Locator. WAN Wide Area Network. WAP See Wireless Application Protocol. WAS IBM WebSphere Application Server. WE See WebSphere Everyplace Suite. WebSphere Everyplace Suite (WES) IBM WebSphere Everyplace Suite is the solution for pervasive computing that connects any device to any data, anywhere, anytime. It supports the following features; Connectivity, Content Adaptation, Optimization, Security, Management Services, and Services. WebSphere Transcoding Publisher (WTP) A network software that modifies content presented to users based on the information associated with the request, such as device constraints, network constraints, user preferences, and organization policies. Transforming content can reduce or eliminate the need to maintain multiple versions of data or applications for different device types and network service levels. Windows CE A version of the Windows operating system designed for small devices such as personal digital assistants (PDAs) (or handheld PCs in the Microsoft vernacular). The Windows CE graphical user interface (GUI) is similar to Windows 95, so devices running Windows CE should be easy to operate for anyone that is familiar with Windows 95. Wireless Application Protocol (WAP) A protocol to transfer content to and from wireless devices. Wireless Markup Language (WML) A language to present content on wireless devices. WML See Wireless Markup Language. WTE Web Traffic Express. WTP See WebSphere Transcoding Publisher.
302
303
304
Index A
Access Code 75, 76, 94 associating with a deal 92 creation 79 DEFAULT 77, 79 purpose 80 unique billing deals 80 AccessBean implementation 186 AccessBean.class 185 getBean method 186 getWellKnownName method 186 read method 185 update method 186 Account Information 156 Account.class getParentAccount method 188 read method 188 AccountMembers.class getMemberNbr method 188 getUserFirstName method 188 getUserName method 188 accounts sub-accounts 149 Additional Services 164 AddressBook 182 AddressBook portlet command addcommand 235 addentry 235 cancelmanageentry 235 defaultcmd 234 delupdatecommand 235 delupdateentry 235 endmanageentry 235 maximize 235 minimize 235 search 235 setfilter 235 method elements 236 getAddressBook 236 getCategoryFilter 236 getCurrentEntry 236 getLastnameFilter 236 getPageCommand 236 isLastCommandValid 236 AddressBook.class add method 189 categories method 189 del method 189 elements method 189 elementsByCategory method 190 elementsByCategoryAndLastname method 190 elementsByCategoryAndName method 189 elementsByLastname method 190 modify method 190 Aero 8000 299 Agenda 182 example 250 garbage collector 230 Agenda portlet command addappt 232 addapptentry 231 defaultcmd 231 delappt 232 delapptentry 232 maximize 231 minimize 231 nextday 232 previousday 232 resOK 232 updateappt 232 updateapptentry 232 method elements 233 getAgenda 233 getDate 233 getMaxHour 233 getMaxHourConfig 233 getMinHour 233 getMinHourConfig 233 getPageCommand 234 getStartDay 233 getStartMonth 233 getStartTime 233 getStartYear 233 isCommandValid 234 setMaxHourConfig 233 setMinHourConfig 233 Agenda.class
305
add method 194 del method 194 elements method 194 getMinHour method 194 getStartHour method 194 getStarttime method 193 modify method 194 Starttime method 193 updateMinMaxHours method 195 Aggregator 182 Aggregator portlet commands defaultcmd 221 maximize 221 minimize 221 normal 221 oneitem 221 method getContent 222 getContentEnumeration 222 AIX 299 AIX filesets 22 installing latest level 23 API 299 Application Servers configuration 67 Appointment.class Appointment method 192 displayDate method 192 displayEnd method 192 displayStart method 192 equals method 192 getDescription method 192 getDuration method 192 getDurationHour method 192 getDurationMin method 193 getEnd method 193 getId method 193 getStart method 192 getStartDay method 193 getStartHour method 193 getStartMin method 193 getStartMonth method 193 getStartYear method 193 isInThePast method 193 setDescription method 192 setDuration method 192 setId method 193 setStart method 192
Architecture JSP Portlet 202 ARPANET 1 ASP 299 Authentication 111 API 184 MS-ISDN 182 Multi-domain mode 113 Single-domain mode 113 stages 112 WML 182 Authentication Checker 113 supports multiple device types 114 wireless 134, 135 Authentication Server 111, 112, 241 central 122 creating 42 file system 115 structure 114 testing 70 wireless 135 authentication.jar 184
B
billing systems 264 BITNET 1 business accounts 149 business case one 138 business object 299
C
Calendar 182 example 249 Calendar portlet command currmonth 229 defaultcmd 229 maximize 229 minimize 229 nextmonth 229 prevmonth 229 week 229 method getCurrentDate 230 getCurrentTime 230 getDayOfMonth 230 getRollingMonthWeekNbr 230 getTime 230
306
challenge handshake authentication protocol 299 CHAP 299 child subscriber creating 162 disconnecting 163 class Component 204, 209 ComponentConfiguration 204, 211 ComponentSession 204, 210 HttpServlet 202, 204 portletSession 202 command /etc/rc.txservers 71 /etc/rc.webservers 71 /usr/netscape/suitespot/stop-admin 39 adminclient.sh 67 chuser 38 console.bat 69, 74, 150 instfix 28 inutoc 25 lslpp 23 mkgroup 38 mkuser 38 smitty 25 StartProvServer.ksh 71 tar 25 XMLConfig.sh 67 Component.class include method 209 ComponentSelector example 251 ComponentSelectorComponent WAP example 262 ComponentSelectorComponent portlet commands add 218 customize 218 defaultcmd 217 delete 218 maximize 218 minimize 218 myappli 218 macro *getCity* 217 *getFirstName* 217 *getGender* 217 *getLastName* 217 *getXxx* 217 method
getCity 217 getComponents 218 getFirstName 217 getGender 217 getLastName 217 getMyComponents 218 getValue 217 getXxx 217 ComponentSession.class getSession method 211 href method 210 init method 210 service method 210 conduit 299 console application downloading 69 Consumer account managing 155 consumer accounts 149 cookies 12, 114, 123, 124 cradle 299 CSR 13 limits by realm 264 see Customer Service Representative 149 Customer Care 12, 152 accessing 150 component 149 functions 149 launching 155 linking external applications 164 reports 163 security provisions 12 Customer Care Representative enrollment 154 Customer Care Server creating 43 test 70 Customer Care Support 13 Customer Service security control 13 Customer Service Representative 149 access control profile 154 enrolling a consumer 156 view and update consumer account 157 Customizor example 242 Customizor portlet commands defaultcmd 224
307
maximize 224 minimize 224 save 224 themes 224 topics 224 CustomizorComponent.class exists method 224 getParameterCheckings method 225
D
DB2 21 DbConnectionMgr 274 DBCS 299 DDL 299 Deal 9, 75 associate Method of Payment List 98 associate with a realm 90 associating an access code 92 change the subscribers Deal 159 creation 82 definition 299 properties 76, 85 Deal text 75 creation 84 device distributing software 10 device management API 281, 282, 299 device management server API 299 Device Manager components 278 console 283 console updates 9 DB2 support 9 functions 278, 284 Generic Windows CE device 9 Iap500 9 Internet appliance device 9 job distribution 9 overview 277 Personal Digital Assistants 10 plug-ins changes 9 purpose 277 Screenphones 10 subscription manager 9 Wireless Access Protocol 10 Device Manager console 299 device plug-ins 280 DHCP 299
Director Tool 16, 225 installing 73 testing 69 directory /usr/TivTSM/selfcare/content/jsp 167 /usr/WebSphere/AppServer/bin 67 DM. See Device Manager DMD 299 DMS servlet 299 DNS 299 double byte character set 299
E
EARN 1 e-business 299 eND 124 enrollment engine 11 Enrollment JSP 108 Enrollment metrics 75 enrollment process managing 99 Enrollment Server creating 48 test 70
F
FavoriteLinks.class add method 197 del method 197 elements method 197 field Profile Name 151 file /db/app/oracle/admin/ispb/create/ispbrun1.ksh 33 /db/creispblv.ksh 33 /installdir/TivTSM/install/tisminstall.log 65 /usr/TivTSM/install/db/oracle/./sqlispb.log 37 /usr/TivTSM/install/etc/rc.txservers 66 /usr/WebSphere/AppServer/bin/setupCmdLine.sh 67 AddressBookComponent.properties 234 AgendaComponent.properties 230 AggregatorComponent.properties 219 AgregatorComponent.properties 244, 245 authentication.jsp 115, 116 Authentication.properties 117, 138 Authentication.properties.wes 119
308
Authenticator.properties 118, 119 Calendar Component. properties 227 ComponentSelectorComponent.properties 214, 252 CustomizorComponent.properties 222, 242 DBPool.properties 117, 121, 122 DefaultAuthenticator.properties 117, 118, 122, 126, 138, 239 Device.properties 138, 143 device_enroll.properties 110 enroll.properties 110 EnrollJspMsg.properties 110 httpd.conf 55 IE.properties 117, 131 install.ksh 58 LayoutSelectorComponent.properties 207, 212 LinkSelectorComponent.properties 225 Nav4.properties 117, 131 ns-setup 38 obj.conf 55 selfcare.properties 169 Transaction.properties 69, 74, 110 Validator.properties 110 WAPAuthentication.properties 138, 139 WapAuthentication.properties 138 WAPAuthenticator.properties 138, 144 file package 300 definition file 300 file transfer protocol 300 filter API 236 Filter.class sample 236 FTP 300
I
IBM 300 IBM HTTP Server 21, 22 IMAP 300 installation different volume group 35 InstantDB 56 backup database 67 Integration Toolkit see iTk 269 Internet Explorer 131 Internet screenphone 300 Internet Service Provider 2, 5 Internet Signup file 263 Internet2 3 ISDN 300 ISP 300 ispb 33 iTk 300 definition 269 example uses 269 form based browser 271 Java Applets 272 method count 276 create 276 delete 276 read 276 setSelectAllField 275 setSelectField 275 update 276 third party applications 272 usage scenarios 271 IY12075 28
G
garbage collector agenda 230 properties 231 GUI 300
J
jar files 117 Java 19, 300 Java Bean 116 auth 137 personalization API 181 Java Developer Toolkit download 25 installation 25 PTF 7 27 Java Server Pages 19 JavaBeans session 114 JavaScript 19
H
HACMP 300 home page customization 14 HotSync 300 HTTP 300
309
JDBC 121, 269, 270, 300 JDBC Connection pool tuning 121 JDK 22, 300 JDK 1.2.2 with PTF 7 21 JSP accessCode 109 accountCode 109 addaddressbookentrywml.jsp 235 addAppthtml.jsp 231, 232 addApptwml.jsp 231 AddMemberAuthError 167 AddMemberCommit 168 AddMemberInput 168 AddMemberMain 168 AddMemberMemberCancel 168 AddMemberRefused 168 AddMemberSubmit 168 addrbookhtml.jsp 213 agendahtml.jsp 213 agreement 110 areYou18 109 cancelByUser 109 ChangePasswordAuthError 168 ChangePasswordCancel 168 ChangePasswordCommit 168 ChangePasswordInput 168 ChangePasswordMain 168 ChangePasswordRefused 168 ChangePasswordSubmit 168 ChangePaymentAuthError 168 ChangePaymentCancel 168 ChangePaymentCommit 168 ChangePaymentInput 168 ChangePaymentMain 168 ChangePaymentRefused 168 ChangePaymentSubmit 168 ChangePersonalInfoAuthError 168 ChangePersonalInfoCancel 168 ChangePersonalInfoCommit 169 ChangePersonalInfoInput 169 ChangePersonalInfoMain 169 ChangePersonalInfoRefused 169 ChangePersonalInfoSubmit 169 configure 109 confirm 109 congrats 109 createfavlinkhtml.jsp 226 createlink7110.jsp 226
customapplihtml.jsp 218 debug 110 delAppthtml.jsp 232 displayaddressbookhml.jsp 235 displayaddressbookhtml.js 235 displayaddressbookhtml.jsp 235 displayaddressbookwml.jsp 235 displayaddressbookwtml.jsp 235 displayAppthtml.jsp 231, 232 displayApptwml.jsp 231, 232 DisplayDeviceAuthError 169 DisplayDeviceInfo 169 DisplayDeviceList 169 DisplayDeviceMain 169 DisplayDevicenotFound 169 DisplayDeviceRefused 169 dontGo 110 English 136 enroll 110 example 241 favlink7110.jsp 226 favlinkhtml.jsp 226 findaddrbookentrieshtml.jsp 234, 235 findaddrbookentrieswml.jsp 235 homehtml.jsp 212 homewml.jsp 212 Japanese 136 Layout 183 logouthtml.jsp 213 manageaddrbookentrieshtml.jsp 235 manageaddrbookentrieswml.jsp 235 maxappliwml.jsp 218 maxcustomhtml.jsp 224 minaddressbookwml.jsp 234, 235 minAgendahtml.jsp 231 minAgendawml.jsp 231 minapplihtml.jsp 218 minappliwml.jsp 218 mincalendar7110.jsp 229 mincalendarhtml.jsp 229 mincustomhtml.jsp 224 minlink7110.jsp 226 minlinkhtml.jsp 226 minnewswml.jsp 221 monthhtml.jsp 229 monthwml7110.jsp 229 mopCombined 110 myapplihtml.jsp 217, 218 myappliwml.jsp 217, 218
310
newsabstract.jsp 221 newsfull.jsp 221 newshtml.jsp 213 newswml.jsp 221 onenews.jsp 221 onenewswml.jsp 221 paymentPlan 110 personalCombined 110 Portlet 183 Portlets Framework 201 reflink7110.jsp 226 reflinkhtml.jsp 226 resultAgendahtml.jsp 232 themehtml.jsp 224 topicshtml.jsp 224 updateDelApptwml7110.jsp 232 userNameInvalid 110 wapauthentication.jsp 136 wapauthenticator.jsp 136 weekwml7110.jsp 229 JSP Portlet architecture 202
K
Kiosk services 300
L
LAN 300 LayoutSelector 182 LayoutSelectorComponent portlet command addrbook 213 agenda 213 defaultcmd 212 home 212 logout 213 news 213 LDAP 16, 300 see Lightweight Directory Access Protocol 10 Lightweight Directory Access Protocol 10 LinkSelector 182 example 248 LinkSelectorComponent portlet command addlink 226 back 226 copylink 226 createlink 226
creproplink 226 defaultcmd 226 dellink 226 favlink 226 minimize 226 reflink 226 method getCatEnum 226 getCatIxEnum 227 getCurrentCategory 227 getFavCategories 227 getFavLinkEnum 227 getFavLinks 227 getLinkEnum 227 List of Method of Payment creation 96 load balancing 124 log /usr/WebSphere/AppServer/logs/authentication.log 136 locations 38 Login creating 152 lvispbdata 34 lvispbdrsys 34 lvispbindex 34 lvispboem 35 lvispbsys 34 lvispbtemp 34 lvispbuser 35
M
macros links 225 meta file definition file 300 method Checker.getSSOPassword Checker.getSSOUserName Checker.isNotAuthenticated Method of Payment creation 95 method of payment changing 159 Method of Payment Information Method of Payment List associate deal 98 Mosaic 2 multi-domain mode 122, 123
156
311
N
NameValuePairs.class add method 198 del class 198 elements method 199 NAS 138 National Science Foundation 1 NcFTPd 6 Netscape Enterprise Server 18, 21 installing 38 Netscape server administration console starting 39 Netscape server instances creating 39 ports 41 primary directories 41 server identifier 41 Netscape servers starting 67 stopping 67 NetVista 301 Network Access Server 73, 134 Nokia Gateway 1.1.1 144 NSFNET 2
O
Oracle 21 8i Version 8.1.5 9 starting 71
P
Palm OS 301 Palm pilot 301 Palmscape 301 PAP 301 password authentication protocol 301 payment methods 75 PDA 135, 277, 301 PDB 301 Perl 19 Personal Information 156 Personal Information Management address book 15 agenda 15 calendar 15 personalization 14 example 241 Personalization Server
creating 46 port 207 test 70 Personalized Service Environment 181 PFTPD 6 plug-in Authenticator.properties 118 DefaultAuthenticator.properties 118 plug-ins Generic Windows CE 9 Internet appliance device 9 lap500 9 POP 301 portal software architecture 183 Portal Toolkit 14 address book 7 agenda 7 Authentication Services 7, 16 calendar 7 JSP Components Framework 15 JSP Portlet Framework 7 Multi-device Portal Engine 7, 15 Referenced Links Management 7, 15 see pTk 181 Targeted Ads 8, 16 User Preferences API 7, 15 Vertical Services Integrated 15 portlet API Component API 208 ComponentSession API 208 portlet framework design 203 portlet JSP definition 204 portlets 201 classes 204 command addressing mechanism 208 Desktop 202 features 202 Layout 202 LayoutSelector 206, 207 service 182, 211 AddressBook 222 , 234 Agenda 222, 230 Calendar 222, 227 Customizor 222 LinkSelector 222, 225 structural 182, 211 Aggregator 211, 219
312
ComponentSelectorComponent 211, 213 CustomizorComponent 211 LayoutSelectorComponent 211, 212 portletSelector 182 PPP 301 PRC 301 Premium Server creating 47 parameters 126 test 70 Profile 150 profile creating 151 Profiler.class sample 239 property creating 87 definition 87 Provisioning FTP Daemon 6 Provisioning server starting 71 proxy 301 PSTN 301 PTF 301 pTk 132, 135, 301 access Bean 185 Account.class 187 AccountFavoriteLinks.class 188 AccountMembers.class 188 AccountNameValuePairs.class 188 AddressBook.class 189 Agenda.class 193 Appointment.class 191 banner ads 182 database of links 182 FamilyMembers.class 195 FavoriteLinks.class 188, 196 filter API 236 functions 181 JSP portlets 202 NameValuePairs.class 198 Profiler API 238 ReferencedLinks.class 200 sample JSP for HTML 183 sample JSP for WML 183 see Portal Toolkit 7 User.class 201
R
RADIUS 112, 123, 135, 182, 183, 301 RADIUS authentication server 19 RADIUS server enhancements 8 RAM disk 301 RAS 301 Realm 9, 11, 74, 91, 99, 150 associating with deals 90 creation 76 default 124 default domain 76 definition 264, 301 description 76 name 76 wireless 137 Registration Name 73, 92, 99 creation 77 Registration name 75 generic 77 Multiple Access 77 reporting sales 93 reports available reports 163 restpages 10 rlvispbdata 36 rlvispbindex 36 rlvispbtemp 36
S
Sales Channel 94 creation 93 definition 93 sample pages for HTML devices 205 screenphone 301 SDP Servlet Server creating 50 SelfCare 16 adding members 178 administration home page 172 change password 172 changing payment information 176 changing personal information 174 configuration file 169 Server creating 44
313
test 70 Service Provisioning 265 servlet 301 Single Sign On 124 SM 302 SMTP 302 Solaris 302 Solaris support 19 SQL 302 SqlGenerator 274 SSL 302 SSO Cookie 123 style sheet 245 wireless 136 sub-accounts 149 subscriber bulk transfer 17 creating child subscriber 162 disconnecting 160 reconnecting 161 removing 160 searching 165 subscriber bases bulk transfer 263 subscriber number 33 Subscriber Selfcare functions 167 Subscriber Update panel 158 subscribers child 149 primary 149 System Management Tools Server creating 45
start sequence 70 whats new 6 Tivoli SecureWay Policy Director 12 TPSM 302 installation 57 overview 5 start sequence 70 Trace 274 traceLevel 67 TraceResources 274 Transaction Servers verifying 71 TSM 302 TxObject 274 TxSqlContext 274 TxValue 274 TxValues 275
U
UDB 302 URL 302 USENET 1 User Groups definition 265 User Preference API 185 User Preferences API 181
V
Validator 275 Virtual ISP 264 creation 266 enrolling subscribers 267 overview 263
T
TCP/IP 302 Telenet 1 test environment hardware 21 software 22 TISM 302 Administration Console 74, 150 DB2 support 8 installation 57 installation verification 69 localization 8 overview 5 post-installation steps 66
W
WAN 302 WAP 135, 277, 302 authentication 182 welcome homepage 261 WAP device 113 WAP Gateway 134 WAS 302 Web Content Hosting 6 File delete 7
314
File download 7 File upload and automatic publishing 7 Perl scripts access counters statistics 6 guestbook 6 mail-to function 6 page access counter 6 Personal Web space display 7 provisioning 6 upload facility 6 Web Hosting Content Server creating 51 Web server configuration file 55 WebMail 234 WebSphere starting 67 Websphere create application servers 67 WebSphere Application Server 21 installation 52 root directory 57 WebSphere Every Place Suite see WES 183 WebSphere Everyplace Suite 9 WebSphere Everyplace suite TPSM integration 10 WES 119, 302 Authentication Proxy 183 WES authentication proxy 113 Windows CE 302 wireless access 134 Wireless Gateway 135 WML 135, 137, 138, 139, 302 WML Script 135 WTE 302 WTP 302
X
XML 135, 183, 303
315
316
What other subjects would you like to see IBM Redbooks address?
Please rate your overall satisfaction: Please identify yourself as belonging to one of the following groups: Your email address: The data you provide here may be used to provide you with information from IBM or our business partners about our products, services or activities. Questions about IBMs privacy policy?
O Very Good
O Good
O Average
O Customer O Business Partner O IBM, Lotus or Tivoli Employee O None of the above
O Please do not use the information collected here for future marketing or promotional contacts or other communications beyond the scope of this transaction.
The following link explains how we protect your personal information. ibm.com/privacy/yourprivacy/
317
BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment.
SG24-6031-00
ISBN 0738419788