DYNAMIC MANAGEMENT OF CONTENT SERVED BY AN INFORMATION SERVICE

Abstract: A content provider manager has been developped for use in an information service such as a portal or desktop application to provide for "pluggable" content that may be modified simply through changes to the set of content provider components encoded in a repository therefor. Content providers served to clients (e.g., browsers) by an information service are dynamically loaded and instantiated within the execution environment of the information service in correspondence with changes in the repository. In some configurations, a single repository provides a mechanism for additions to, removals from and/or changes in the set of content providing components served by multiple information service installations. Although the techniques described are more generally applicable, they are particularly useful in implementations of dynamic content applications, including user customizable web portal and personalized desktop, e.g., webtop, applications, wherein a suite of content provider interfaces are provided and the content provider interfaces are separately supported, maintained, owned, licensed, etc. or provide content for which a given user or client application may be separately authorized, configured, enabled or licensed.

Description: DYNAMIC MANAGEMENT OF CONTENT SERVED BY AN INFORMATION SERVICE Technical Field The invention relates to information services, and more particularly, to systems, methods and articles of manufacture for allowing the set of content provided by an information service to be dynamically modified Background Art The internet has become an important medium for information services and electronic commerce. As the internet was commercialized, organizations initially established their presence in cyberspace by making available relatively static information, including generalized descriptions of products and services More recently, dynamic content has become popular For example, electronic commerce sites now typically present product offeπngs and pricing information that varies over time. Similarly, internet news services offer news related content that is routinely updated Search engines and portals similarly offer content that is updated over tune. Often access is provided to time varying content through a relatively fixed set of interfaces resolved at runtime using technologies such as server side mcludes (SSI), Common Gateway Interface (CGI) scripts, Java™ Servlets and Java Server Pages (JSP) implementations based on software available from Sun Microsystems, Inc. and Active Server Pages (ASP) implementations based on software available from Microsoft Corporation. Java and all Java-based marks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. m the United States and other countries. While sophisticated dynamic content has been provided using such technologies, typically the underlying implementation is fixed In particular, implementing infrastructure, e.g., CGI scripts, servlets, JSP or ASP pages and embedded code, is typically static and dynamic content is provided usmg static infrastructure to access database content that is itself dynamic Modifications to the CGI scripts, servlets, JSP or ASP pages and embedded code for accessing databases or other backend services such as credit card validation, search, payment settlement, order processmg, etc typically require code and HTML modifications, recompilation and new code releases As a result, information services must typically be interrupted for addition, removal or change to a set of content providing components Systems and methods are desired that allow content provider components to be added, removed or changed without base code recompilation, package installation or information service downtime. DISCLOSURE OF INVENTION Accordingly, techniques have been developed to provide dynamic management of content provider components. In particular, systems, methods and articles of manufacture have been developed to allow additions to, removals from and/or changes in the set of content providing components provided by an information service without interruption of the information service Some configurations in accordance with the present invention, e.g., a content provider manager and desktop service described herem, provide for "pluggable" content that may be modified simply through (1) changes to the set of content provider components encoded in a repository therefor and (2) responsive changes in the set of instantiated content providers served by the configuration. In some configurations, a single repository provides a mechanism for additions to, removals from and or changes m the set of content providing components served by multiple information service installations Although the techniques described herem are more generally applicable, they are particularly useful m implementations of dynamic content applications, mcludmg user customizable web portal and personalized desktop, e.g., webtop, applications, wherein a suite of content provider mterfaces are provided and the content provider mterfaces are separately supported, maintained, owned, licensed, etc or provide content for which a given user or client application may be separately authorized, configured, enabled or licensed In one embodiment in accordance with the present mvention, a method of modifying content served by a networked information service mcludes instantiating a set of one or more content provider classes, supplymg a client application with content correspondmg to the mstantiated content providers, updatmg the set of mstantiated content providers without interruption of the networked information service, and thereafter supplymg the client application with content correspondmg to the updated set of mstantiated content providers The set of instantiated content providers is based on encoded representations thereof in a content provider directory and the updated set of mstantiated content providers is based on changes to content provider directory. In one variation, the updatmg mcludes, for each new content provider, instantiatmg a correspondmg new class and addmg the correspondmg mstantiated class to a list of content providers available to the networked information service. The updatmg further mcludes, for each removed content provider, destroying a correspondmg previously mstantiated class and removmg the correspondmg previously instantiated class from the list of content providers available to the networked information service In another embodiment m accordance with the present mvention, a method of updatmg content served by an information resource without interrupting operation of the information resource mcludes instantiating m accordance with a content repository, a set of software objects implementing respective content sources, addmg to, and removing from, the set of mstantiated software objects in correspondence with additions to, and deletions from, the content repository, and, m response to a request from a client application, selecting for execution those of the set of software objects consistent with associated user parameters; executmg the selected software objects; and supplymg the client application with content sourced from the selected software objects The mstantiated software objects are executable by the information resource without recompilation of the information resource and without a service interrupting restart thereof In one vaπation, the client application mcludes a web browser, the information resource mcludes a web portal and the content supplymg mcludes organizmg content from the selected software objects and supplymg the organized content to the web browser as a web page. In yet another embodiment m accordance with the present mvention, a method of providing a dynamically variable set of content mstances m an information resource environment mcludes predefining at least one repository for encodmg one or more content mstances of the set of content instances; instantiating, in response to addition to the set of content mstances of an encodmg for a first content mstance, the first content mstance within the information resource environment without interruption thereof, and thereafter, presentmg the first content mstance as part of the information resource environment. In one vaπation, the method further mcludes dissociating, in response to removal from the set of content mstances of an encodmg for a second content mstance, the second content instance from the information resource environment without interruption thereof, and thereafter, presentmg the information resource environment without the second content mstance In another variation, the method further mcludes remstantiatmg, m response to modification of an encoding for a third content mstance, the third mstance withm the information resource environment based on the modified encodmg, and thereafter, presentmg a modified third content mstance as part of the information resource environment The remstantiatmg is without interruption of the information resource environment In still yet another embodiment m accordance with the present mvention, a networked information system mcludes a content manager service responsive to client requests for access to content providers and means for updatmg a set of mstantiated content providers m correspondence with changes m a repository therefor and without interrupting client request servicing by the content manager The content manager instantiates the set of the content providers encoded in the repository In still yet another embodiment m accordance with the present mvention, a computer program product encoded m at least one computer readable medium mcludes content provider manager code and information service code The content provider manager code is executable on one or more computers as a content provider manager service to mamtam a time-varying set of mstantiated content provider objects m correspondence with a content provider repository The information service code is executable to service incoming requests for information content The mterface code services the incoming requests with information content from the time- varymg set of instantiated content provider objects Changes to the time- varymg set of mstantiated content provider objects are supported without a service interrupting recompilation or restart of the information service code In vaπous vaπations, the information service code implements a web portal or a desktop service BRIEF DESCRIPTION OF DRAWINGS The present mvention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled m the art by referencmg the accompanying drawings FIG. 1 depicts an exemplary configuration of components providmg dynamic management of content m accordance with an embodiment of the present invention FIG. 2 is a flow chart depictmg mteraction of various components of a dynamic content provider management configuration in accordance with an embodiment of the present invention FIG. 3 is a network diagram illustrating a configuration m accordance with the present mvention, wherem a dynamically updateable content provider repository allows content provided by multiple network applications to be updated FIG. 4 illustrates a screen presentation of a web portal application integrating content from multiple content providers each dynamically updateable m accordance with an embodiment of the present mvention The use of the same reference symbols m different drawings mdicates similar or identical items MODE(S) FOR CARRYING OUT THE INVENTION FIG. 1 illustrates components of an exemplary configuration for dynamically managing a set of content providers Although not limited thereto, some aspects of the present mvention are descπbed herem in the context of content provider types, media content and messagmg mterfaces typical of web portal applications and browser technologies Nonetheless, based on the description herem, persons of ordinary skill m the art will appreciate applications to information services, in general, wherem dynamic management of the set of underlymg information sources is provided without interruption of the information service Focusmg then on the illustrative configuration of FIG. 1, content provider manager 140 dynamically loads a set of content providers (e g , provider 151, provider 152, and provider 153) m correspondence with contents of a content provider repository (e g , content provider repository 130) Content provider repository 130 encodes representations of a set of available content providers (e g , as representation 131, representation 132 and representation 133) Initially, content provider manager 140 loads (2) a set of content providers based on the contents of content provider repository 130 Thereafter, the loaded set 192 of components is mamtamed m accordance with contents of content provider repository 130 In some configurations, content provider manager 140 periodically checks content provider repository 130 for additions, deletions, or changes to the set of content provider representations encoded therein Other timings, e g , event triggered, m response to access requests, etc , may be implemented m other configurations Upon detection (1) of a change, content provider manager 140 dynamically loads a content provider or content providers in accordance with the change For example, m the case of an addition to repository 130 (e g , added content provider representation 134) content provider 140 detects the addition and dynamically loads (2 A) content provider 154 m response thereto In the case of a deletion, content provider manager 140 similarly detects the deletion (e g , of representation 132) and deallocates a correspondmg loaded content provider (e g , content provider 152) m response thereto Content provider manager 140 also detects modifications to content provider representations (e g , to content provider representation 131) In response to a detected modification, content provider manager 140 reloads a correspondmg content provider (e g , content provider 151) m accordance with the updated representation thereof In this way, content provider manager 140 allows a set (192) of dynamically loaded content providers to be mamtamed m accordance with a separate repository (e g , m accordance with the set of content providers for which representations are encoded m content provider repository 130) The set 192 of dynamically loaded content providers therefore reflects additions of new content providers, removal of old, outdated or faulty content providers and updates to existmg content providers Advantageously, configurations in accordance with the present invention allow modifications to the set of available content providers to track software updates and feature enhancements However, other advantages, such as the ability to modify the set of available content providers based on other cnteπa such as secuπty posture or load conditions, are also provided In one realization, content provider manager 140 and an information service application (e g , web desktop or portal application 120) are loaded and mstantiated withm a server environment, e g , as objects loaded and mstantiated from class definitions enumerated m the class path of the server application Together, these initially loaded objects or components are illustrated as set 191 In contrast, set 192 of content provider objects or components is dynamically loaded and dynamically mstantiated Typically, content provider manager 140 mamtams an internal representation or list of currently loaded content providers For example, m one realization, content provider manager 140 mamtams a data structure (e g , a list or array) of content provider mterfaces By defining a uniform mterface to content providers, and by dynamically loading and instantiating implementing classes (e g , as encoded by a content provider representation such as 131), the set of available content providers may be changed without restarting or interrupting web desktop/ portal application 120 One realization of a uniform content provider mterface is as an "interface" that defines the methods a content provider object must support Classes implementing the mterface are defined for each content provider (e g , m encoded form in content provider repository 130) By way of example and not limitation, one realization of a content provider interface is as follows public interface SNContentProvider { public StnngBuffer getHTMLContent ( Hashtable userData ) , public StnngBuffer getHT LEditForm ( Hashtable userData ); public StnngBuffer getHT LHelpContent ( Hashtable userData ) ; public Hashtable processEdιtForm( HttpServletRequest request, Hashtable userData ) ; public Properties getProperties () ; public String getProperty ( String key ), } wherein content provider implementations particular to a given web desktop or portal application each implement the getHTMLContent, getHTMLEditForm, getHTMLHelpContent, processEditForm, getProperties, and getProperty methods Of course, other realizations may define different interfaces In the exemplary realization above, a method implementing getHTMLEditForm returns an HTML edit form for modifying content provider properties and/or preferences The returned HTML edit form is typically supplied by web desktop/ portal application 120 to a client application (e g , a browser) for display to a user, entry of properties and/or preferences by the user, and postmg back to web desktop/ portal application 120 For example, a method implementing getHTMLEditForm for a stock quote content provider mstance may return an HTML edit form allowing a user to select particular ticker symbols for tracking and/or allowing a user to specify a particular presentation of data (e g , time period and comparable mdex for rendition on a graph) The proces sEditForm method allows web desktop/ portal application 120 to pass posted form data (e g , from a browser and user) m the form of an HttpServletRequest to the content provider implementation Thereafter, web desktop/ portal application 120 may employ the getHTMLContent method to obtain content (e g , encoded as HTML, images, movmg picture formats, audio content, scπpts, Java programming language code, etc ) from a particular content provider implementation As descπbed elsewhere herem, some realizations m accordance with the present mvention allow user preferences, identity, permissions and/or roles to affect the set of content providers available, the content available form, or supplied by, a particular content provider mstance, the format of content supplied by a particular content provider mstance, etc Accordmgly, m the exemplary realization above, userData is passed from web desktop/ portal application 120 to various implementing methods of a client provider implementation to facilitate preferences, identity, permission and/or role dπven content In some configurations m accordance with FIG. 1, content provider repository 130 is implemented as a file system directory accessible to content provider manager 140 In such configurations, individual content provider representations (e g , representations 131, 132, 133, and 134) may be encoded as files m the correspondmg content provider directory (or directories) In one such file system directory-based implementation, content provider manager 140 detects changes to the set of representations simply by using file system facilities mdicatmg the time at which the content provider directory was last changed In case of a detected change to the contents of the content provider directory, content provider manager 140 then checks the individual representations to determine the set of added, removed and or updated representations m the repository Other content provider repository configurations are also envisioned For example, m configurations providmg centralized management of content served by distπbuted web desktop/ portal applications, content provider repository 130 may be implemented as a network accessible resource such as a callable information service, a database system, a remotely accessible file system, etc In this way, update to a smgle network accessible content provider repository allows an implementation of a content provider hosted by multiple information services, e g , a stock portfolio tracker component hosted by information service portals of a variety of licensees, to be added, deleted or upgraded throughout the world without interruption of the information services In one exemplary realization, representations of content provider implementations are encoded m content provider repository 130 in compressed form as Java Archive (jar) files Both implementing class definitions and HTML templates for use by an mstantiated content provider are typically mcluded m a jar file representation In response to a detected addition or change to a jar encoded content provider representation, content provider manager 140 uncompresses contents of the correspondmg jar file and loads implementing classes into an execution environment Other realizations may employ other encodmgs (e g , other archive formats, compressed and uncompressed formats, indirect encodmgs referencmg a separate store, etc ) without departmg from the spiπt and scope of the mvention as recited in the appended claims In some realizations, instantiation of a loaded content provider may be deferred until a request is received from web desktop/ portal application 120 for the added or changed content provider In other realizations, instantiation may be comcident with loadmg Referring agam to FIG. 1, as additional content providers are loaded, e g , m response to changes m the set thereof encoded by content provider repository 130, additional content providers are made available to web desktop/ portal application 120 by content provider manager 140 In contrast, existing web portal applications require interruption (typically with code changes and application restart) to change the set content serviced thereby Deletions handled similarly in an exemplary realization of content provider manager 140 and web desktop/ portal application 120. In such implementations, content provider manager 140 may simply update its internal list of content provider mterfaces to remove the deleted content provider mstance. Modifications to an implementing class are handled by loadmg the new class definιtιon(s) and updatmg content provider manager's internal list to identify the newly loaded class. In some realizations, content provider manager 140 may omit deallocation of a removed or replaced content provider. For example, in implementations based on virtual machme environments providmg automated memory management (e.g , garbage collection) application directed deallocation may be unnecessary. In some implementations m accordance with the present mvention (e.g., implementations based on object-oπented technologies) content provider manager 140 may dynamically load a correspondmg set of content providers without mstantiatmg mstances thereof. In other implementations, mcludmg other object- oπented implementations, dynamically loaded content providers (e.g., providers 151, 152, 153, and 154) maybe mstantiated comcident with loadmg. In the embodiment of FIG. 1, dynamically loaded content providers 192 are shown distmct from underlymg data stores (e.g., data store 161, data store 162, data store 163, and data store 164). Based on the descπption herem, persons of ordinary skill m the art will appreciate a wide variety of data stores suitable for mteraction with content providers. For example, data stores may mclude data base management systems, mcludmg relational data base management systems, files, callable mterfaces to applications, etc. Content providers (e.g., content providers 151, 152, 153, and/or 154) supply information based on data represented in zero or more of such data stores. For example, a given content provider may draw information from multiple data stores to present an mtegrated presentation thereof. Alternatively, a content provider need not interface with any external data store. In general, dynamically loaded content providers 192 can mclude any dynamically loaded software component capable of supplymg information content suitable for presentation by an information service (e.g , by web desktop/ portal application 120). For example, m a web desktop/ portal application, content provided by a particular content provider implementation may mclude. (1) directory content such as yellow pages information, employee list information, etc ; (2) mterfaces to search facilities, schedule or temporal content, such as movie listings or conference room scheduling information; (3) mterfaces to applications sets, toolbars, file systems, etc.; (4) advertising content, banner ads, etc.; (5) news content, press release information, articles sorted by topic, author, publication, etc.; (6) mterfaces to communications facilities such as for voice messagmg; text messagmg, audio, visual, or audiovisual broadcast and/or pomt-to-pomt media content; etc.; and (7) real-time or near-real-time data presentations, such as of financial, stock price, system status, traffic flow, or manufacturing process control data, etc , In general, supplied information content may take a vaπety of forms, e g , encoded as HTML, images, movmg picture formats, audio content, scπpts, Java programming language code, etc Although m typical configurations, supplied information mcludes media or multimedia content suitable for presentation to a human user at a browser, other configurations may supply information content suitable for non-human clients, e g , for automated agents, real-time data applications, etc By employmg techniques described herem, the information service can be made "content agnostic," l e , essentially without knowledge of the particular content it serves to clients By decomposmg available content sources mto dynamically loadable content providers configuration management can be improved (e g , addition, deletion and modification of functionality are facilitated), content may be supplied with a higher level of configurability and customization than otherwise typically available, information service implementations will exhibit performance scalable to large sets of content providers, and mamtenance is facilitated by allowing replacement content provider components to be installed without regression m other portions of a desktop or portal application Focussmg now on an illustrative desktop/web portal exploitation of a dynamic content provider configuration m accordance with the present mvention, a client application (e g , browser 110) queries a network application implementing the desktop or web portal 120 For example, browser 110 operating on behalf of a particular user (not shown) may query desktop/web portal 120 for a user customized desktop or portal presentation Although persons of ordmary skill m the art will appreciate a wide variety of applications based on the description herem, an exemplary exploitation as a web portal is illustrative Persons of ordmary skill in the art will recognize a wide variety of existing portal applications, mcludmg those built around search engme facilities such as MY YAHOO, MY ALTAVISTA, SNAP com, etc , those built around news organization content such as myCNN com or MSNBC com or others such as MY NETSCAPE as illustrative of the type of content that may be presented m usmg facilities of the present mvention By employmg facilities described herein for dynamic management of content providers, customizability, scalability and configuration management of similar portal or desktop applications may be improved In particular, m some realizations, additions, deletions, and modifications to available sets of content provider components may be performed without interruption of the portal or desktop application Referring agam to FIG. 1, desktop/portal 120 obtams (11, 12) an encodmg or list of currently available content providers from content provider manager 140 in response to a request (10) from browser 110 Based on the list of available content providers, desktop portal 120 obtams content from at least a subset of the available content providers In some configurations, desktop/portal 120 selects from amongst the available content providers based on user preferences and/or permissions or roles In some configurations, sophisticated authentication, authorization and permission facilities may be employed to restπct access to particular content providers or to particular data presented thereby In other implementations, authentication, aufhoπzation, permissions, and roles may be unnecessary User preferences may also define a subset of the available content providers for which a given user will receive mtegrated content In such configurations, user preferences may be established withm the context of a given session or may be persistent across sessions Facilities for tracking users across session context (e g , usmg cookies or through authentication of a principal ID) will be appreciated by persons of ordmary skill m the art Based then on any permission, role and/or preferences employed by desktop/portal 120, a subset of available loaded content providers is used to mtegrate content returned (13) to browser 110 For implementations m which loadmg and instantiation are separable, dynamically loaded content providers may be mstantiated m response to a request from desktop portal 120 for cuπently available content providers In some configurations, a smgle mstance of each available content provider may be mstantiated In such configurations, each mstantiated content provider should be "thread-safe" so that transactions from multiple browsers will be handled appropπately In other implementations, multiple mstances of a content provider may be instantiated as appropriate for load balance or corresponding to individual browser sessions In some configurations, desktop/portal 120, content provider manager 140 and each of the dynamically loadable content providers 192 are implemented withm a application or web server environment For example, each maybe implemented usmg servlet technology m the context of a Java web server implementation In such an implementation, desktop/portal 120 and content provider manager 140 may be loaded on application initialization based on contents of class path, whereas the content providers themselves (e g , content providers 151, 152, 153, and 154) are dynamically loaded by content provider manager 140 m accordance with the contents or state of repository 130 FIG. 2 illustrates a flow chart of operations m an exemplary implementation providmg dynamic content in accordance with the present mvention In the flow of FIG. 2, three essentially asynchronous processes are illustrated In particular, FIG. 2 illustrates a first process (delimited by begm 205 and end 206) by which contents of a content provider repository 230 are added to, removed from or updated A second essentially asynchronous process is delimited by begin 203 and delay 204 This second essentially asynchronous process checks repository 230 for changes As described above with reference to FIG. 1, such changes may mclude additions, removals, updates, as well as any combmation of additions, removals and updates In response to such changes, added content providers are loaded, updated content providers are overloaded and removed content providers are unloaded from a set of cuπent content providers In some configurations in accordance with the present mvention, the current set of content providers is represented as a content provider list 220 that is accessible to a desktop or portal process which is descπbed below As content provider repository 230 is periodically checked for changes, the set 250 of currently available content providers (e g , provider 251, provider 252, provider 253, provider 254) changes m accordance with the set of content providers represented m repository 230 In this way, additions, removals and updates to repository 230 are dynamically reflected m a current set of providers 250 that, m some realizations is represented m content provider list 220 Referring now to the left-hand side of FIG. 2, a desktop or portal component receives 241, are request such as for a user customized desktop In response to the request, cuπent provider list 220 is checked for the cuπent set of available content providers For each cuπently available content provider, permission, roles and preferences associated with the user are checked so that a proper subset of cuπently available content providers may be employed to generate mtegrated content for return to a request m client application Note that m some configurations m accordance with the present invention, either or both of permission/roles and preference checks may be omitted Also note that m some configurations m accordance with the present mvention, preferences 272 may also affect both the presentation and organization of mformation supplied from content providers, as well as the set of content providers employed Refeπmg to the configuration of FIG. 2, a set of dynamically loaded and dynamically mstantiated content providers are employed to supply mformation content that is selected from organized and transmitted (244) to a client application (e g , a browser) m response to received request 241 Note that operation of the desktop/portal component (e g , from begm 201 to end 202) is essentially asynchronous with update of the cuπently available set of content providers 250, which is itself essentially asynchronous from the addition, removal and update of content provider encodmgs m content provider repository 230 To facilitate mteractions amongst the essentially asynchronous processes or threads, lockmg of shared resources (e g , of content provider repository 230, content provider list 220, and/or mstantiated providers 250) will typically be employed Although the configuration of FIG. 2 contemplates a periodic check for changes to repository 230, persons of ordmary skill in the art will appreciate a vaπety of suitable modifications For example, updates to the set of cuπently loaded and/or mstantiated content providers (e g , set 250) may be event driven, e g , m direct response to modifications to repository 230 Alternatively, content provider repository 230 may be checked for changes m response to operation of the desktop/portal component For example, content provider repository 230 may be checked m response to a user request or in response to a supply of content from the cuπent set 250 of providers, although an essentially asynchronous configuration is presently prefeπed for performance reasons Although loop constructs and particular sequences of operations are illustrated in FIG. 2, persons of ordmary skill m the art will appreciate that the particular constructs and orders of operations are not essential to achievmg dynamic management of content providers and that alternate ordermgs and flow constructs may be employed A vaπety of suitable alternative ordermgs and flows fall withm the scope of the appended claims Furthermore, although FIG. 2 illustrates mteractions of a smgle process updatmg contents of a smgle content provider repository, it would be understood that multiple mdependent add, remove and or update flows may operate to affect the set of content providers encoded m content provider repository 230 For example, multiple mdependent business organizations may separate post, remove or supply updated releases of content providers to content repository 230 Similarly, content provider repository 230 may be implemented as one or more physical stores For example, distmct busmess organizations may mamtain separate stores which together form a distributed implementation of content provider repository 230 In such configurations, checks (251) to the distπbuted content provider repository may be performed Furthermore, although FIG. 2 illustrates a smgle desktop/portal implementation and a smgle set 250 of cuπently available providers, persons of ordmary skill in the art will recognize that multiple mstances of each may be driven by updates to content provider repository 230 Indeed, one advantage of implementations in accordance with the present mvention is the ability to drive updates to geographically distπbuted application servers from a smgle content provider repository 230 FIG.3 is a network diagram illustrating such a geographically distπbuted configuration. In the configuration of FIG. 3, a set 130 A of content provider encodmgs is represented at a content provider repository hosted by a server 311 on network 310 Repository 130A is available over network 301, which may mclude a public switch telecommunications network, a private internet and/or other communications infrastructure, to geographically distπbuted application server implementations 321 and 331. In the configuration of FIG. 3, repository 130A encodes representations of a superset of content providers 1, 2, 3 . N, and the two application web servers 321 and 331 host desktop, portal or other similar applications mtegratmg content provided by mstantiated subsets of the content providers. For example, application web server 321 mtegrates content from content providers PI and P2, whereas application web server 331 mtegrates content from content providers PI and P3. Advantageously, by updatmg repository 130A with an encodmg of content provider N, both application web server 321 and 331 may be dynamically updated to mclude, load and mstantiate content provider PN, and thereby make available content associated therewith to respective client applications. Removals of content providers from repository 130A and updates to content providers encoded m repository 130A may similarly be supplied to application web servers 321 and 331 as described above with reference to FIGS. 1 and 2 FIG. 4 illustrates a screen configuration m which multiple screen presentations coπespondmg to multiple backmg content provider mstances are aπanged m accordance with user preferences In the presentation of FIG. 4, the set of content providers made available to a user is determined in accordance with permissions and roles associated with the user. Although a wide variety of desktop, portal and other application mterfaces is envisioned, the screen presentation of FIG. 4 is illustrative of several forms of content that may be supplied by backmg content provider mstances (e.g , providers 251, 252, 253 .. 254) usmg facilities such as descπbed above with reference to FIGS. 1 and 2 In the screen presentation of FIG. 4, a screen presentation 401 coπesponds to a Yellow Pages content provider Screen presentation 402 coπesponds to a content provider implementing search facilities Screen presentation 403 coπesponds to a content provider implementing a zip code based movie show time look-up. Screen presentation 404 coπesponds to a content provider implementing a launch facility for various network based applications. Screen presentation 405 coπesponds to a content provider supplymg user ID and user ID related information Screen presentation 406 coπesponds to a content provider supplymg server status information Screen presentation 407 coπesponds to a content provider supplymg press release mformation from one or more sources Screen presentation 408 coπesponds to a content provider supplymg news headlmes from one or more sources Screen presentation 409 coπesponds to a content provider supplymg stock price information. Screen presentation 410 coπesponds to a content provider implementing a jump to network URL facility. Finally, screen presentation 411 coπesponds to a content provider supplymg advertising mformation. Although screen presentations 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 and 411 are exemplary of a wide variety of coπespondmg content providers that may be dynamically managed usmg facilities m accordance with the present mvention, they are by no means exhaustive. Based on the descπption herem, persons of ordmary skill m the art will appreciate a wide vaπety of content providers and associated screen presentations that may be employed Usmg facilities descπbed above with reference to FIGS. 1, 2 and 3, backmg content provider implementations may be added, removed or updated dynamically and made available to desktop or web portal applications In the context of FIG. 4, such dynamically variable sets of content providers may be personalized in accordance with user preferences by selectmg screen locations for presentmg content associated therewith Usmg the facilities descπbed above m the context of FIGS. 1, 2 and 3, content providers may be added to the set available for inclusion m a user's personalized desktop without interrupting and/or restarting the desktop or web portal service with which the user mteracts In addition, the addition or update of a particular component, for example, a stock portfolio content provider component coπespondmg to screen presentation 409 may be added or updated to multiple desktop or portal implementations distπbuted throughout the world, throughout an organization, etc by updating a single content provider repository As desktops and portal applications attempt to mtegrate content from a wide variety of sources and vendors, the dynamically pluggable aspects of implementations m accordance with the present invention provide a substantial advantage by decouplmg the addition, removal and/or update of content provider components from the desktop or portal implementation Content provider implementations may be updated or added all without interrupting operation of a desktop or portal implementation Exemplary Implementations In an exemplary embodiment, at least some of the above-descπbed components are implemented as servlets executable m the context of a commercially-available web server environment For example, the Netscape Enterprise Server architecture with extensions for certificate handlmg, HyperText Transfer Protocol (HTTP), Secure Sockets Layer (SSL) support, and Java™ Servlet Support available from Netscape Communications Corporation and Sun Microsystems, Inc is one suitable environment Netscape is a registered trademark of Netscape Communications Corporation m the United States and other countries Java and all Java-based marks and logos are trademarks or registered trademarks of Sun Microsystems, Inc in the United States and other counrπes While the descπption herem is focused on aspects of a dynamically managed set of content providers, rather than on peculiaπties of a particular implementation environment, it is envisioned that implementations in accordance with the teachmgs of the present mvention may be implemented m the context of many commercially-available networked information service environments, mcludmg web server environments, as well as m custom environments and environments that m the future will be developed However, to facilitate an understanding of broad concepts usmg a specific exemplary environment, and without limitation, the descπption herem may mclude termmology specific to web servers and a Netscape Enterpπse Server architecture thereof Nonetheless, based on this descπption, persons of ordmary skill m the art will appreciate implementations suitable for other environments The scope of the mvention, as defined by the claims that follow, is not limited to any specific implementation environment While the mvention has been descπbed with reference to various embodiments, it will be unde stood that these embodiments are illustrative and that the scope of the mvention is not limited to them Many vaπations, modifications, additions, and improvements are possible For example, although object-oπented terminology is used to descπbe exemplary realizations (and in some cases, Java programming language constructs are used to facilitate descriptions), embodiments need not employ object-oπented technology (or Java technology) Although web desktop and portal applications have been described, embodiments m accordance with the mvention a e not limited thereto Similarly, particular encodmgs of content provider representations and structures of uniform content provider mterface definitions are merely exemplary More generally, plural mstances may be provided for components descπbed herem as a smgle mstance Fmally, boundaries between various components, services, servlets, and data stores are somewhat arbitrary, and particular operations are illustrated m the context of specific illustrative configurations Other allocations of functionality are envisioned and may fall withm the scope of claims that follow Structures and functionality presented as discrete components m the exemplary configurations may be implemented as a combmed structure or component These and other variations, modifications, additions, and improvements may fall withm the scope of the invention as defined m the claims that follow

Claims: WHAT IS CLAIMED: 1. A method of modifymg content served by a networked mformation service, the method compπsmg: mstantiatmg a set of one or more content provider classes, the set of mstantiated content providers based on encoded representations thereof m a content provider directory; (a) supplymg a client application with content coπespondmg to the mstantiated content providers; updatmg the set of mstantiated content providers without mterraption of the networked information service, the updated set of mstantiated content providers based on changes to content provider directory; and thereafter (b) supplymg the client application with content coπespondmg to the updated set of mstantiated content providers. 2. A method as in claim 1, wherem the (a) and the (b) supplymgs include content supplied by then instantiated content providers responsive to requests from the client application 3. A method as m claim 1, wherem the client application mcludes a browser, and wherem the (a) and the (b) supplymgs mclude content supplied by then mstantiated content providers and organized m accordance with user preferences as at least one page for display by the browser 4. A method as m claim 1, wherem the updating mcludes for each new content provider, mstantiatmg a coπespondmg new class, and addmg the coπespondmg mstantiated class to a list of content providers available to the networked mformation service; and for each removed content provider, destroying a coπespondmg previously mstantiated class; and removmg the coπespondmg previously mstantiated class from the list of content providers available to the networked mformation service. 5. A method as m claim 4, wherem the updatmg mcludes for each modified content provider, destroying a coπespondmg previously mstantiated class; and re-mstantiatmg a coπespondmg new class 6. A method as m claim 1, further compπsmg peπodically exammmg the content provider directory for a change to the content providers encoded therein 7 A method as m claim 1, wherem the content providers are encoded as compressed archives of implementing classes and markup language templates, wherem the updatmg mcludes expandmg each new compressed archive and mstantiatmg the implementing classes encoded therein, and wherem the (b) supplymg mcludes organizmg presentation of content to the client application m accordance with coπespondmg ones of the markup language templates 8 A method as m claim 1, further compπsmg selectmg subsets of the mstantiated content providers for the (a) and the (b) supplymg to the client application based on a coπespondmg user's access limitations and preferences 9 A method of updatmg content served by an information resource without mterruptmg operation thereof, the method compπsmg mstantiatmg m accordance with a content repository, a set of software objects implementing respective content sources, addmg to, and removmg from, the set of mstantiated software objects m coπespondence with additions to, and deletions from, the content repository, the mstantiated software objects executable by the information resource without recompilation of the mformation resource and without a service mterruptmg restart thereof, m response to a request from a client application, selectmg for execution those of the set of software objects consistent with associated user parameters, executmg the selected software objects, and supplymg the client application with content sourced from the selected software objects 10 A method as m claim 9, wherem the client application mcludes a web browser, wherem the information resource mcludes a web portal, and wherem the content supplymg mcludes organizmg content from the selected software objects and supplymg the organized content to the web browser as a web page 11 A method as m claim 9, further compπsmg addmg to, and deletmg from, the content repository 12 A method as m claim 9, wherem the content repository mcludes a file system directory 13. A method as m claim 9, wherein the content repository mcludes a data store physically separated from the mformation resource but accessible via a communications network. 14 A method as in claim 9, wherem the content repository encodes instantiable representations of the software objects 15. A method as m claim 9, wherem the content repository is shared amongst the mformation resource and a second mformation resource. 16. A method as m claim 15, wherem at least two of the content repository, the information resource and the second mformation resource are physically dispersed 17. A method as m claim 9, wherem the user parameters include permissions and preferences particular to a user 18 A method as m claim 9, further comprising- periodically checkmg the content repository for changes thereto; and performing the addmg to, and removmg from, m response to a content repository change detected durmg the peπodic checkmg. 19. A method of providmg a dynamically vaπable set of content mstances m an information resource environment, the method compπsmg- predefining at least one repository for encodmg one or more content mstances of the set of content mstances; responsive to addition to the set of content mstances of an encodmg for a first content mstance, mstantiatmg the first content mstance withm the mformation resource environment without mterraption thereof; and thereafter, presentmg the first content mstance as part of the mformation resource environment. 20. A method as m claim 19, further compπsmg periodically checkmg the at least one repository for the addition 21. A method as m claim 19, wherem the mstantiatmg without mterraption is without mformation resource environment recompilation and without a service mterruptmg restart of the mformation resource environment. 22 A method as in claim 19, further compπsmg responsive to removal from the set of content mstances of an encodmg for a second content mstance, dissociating the second content mstance from the mformation resource environment without mterraption thereof, and thereafter, presentmg the mformation resource environment without the second content instance 23 A method as in claim 19, further compπsmg responsive to modification of an encodmg for a third content mstance, remstantiatmg the third mstance withm the mformation resource environment based on the modified encodmg, the remstantiatmg bemg without mterraption of the information resource environment, and thereafter, presentmg a modified third content mstance as part of the mformation resource environment 24 A method as m claim 19, wherein the information resource environment mcludes a network service for selecting from the set of content mstances and presentmg selected content m accordance with a desktop paradigm, and wherem the selectmg is m accordance with a particular user's access limitations and preferences 25 A method as m claim 19, wherem the repository mcludes a file system directory, and wherem the one or more content mstances are encoded as one or more content provider archive files m the file system directory 26 A method as m claim 19, wherem the information resource environment mcludes a desktop service executmg on a web server, and wherem the desktop service supplies a client browser with a customized set of content providers 27 A networked mformation system compπsmg a content manager service responsive to client requests for access to content providers, the content manager mstantiatmg a set of the content providers encoded m a repository therefor, and means for updatmg the set of mstantiated content providers m coπespondence with changes in the repository and without mterruptmg client request servicing by the content manager 28 A computer program product encoded m at least one computer readable medium, the computer program product compπsmg content provider manager code executable on one or more computers as a content provider manager service to mamtam a time-varying set of mstantiated content provider objects m coπespondence with a content provider repository, and mformation service code executable to service incoming requests for information content, the mterface code servicing the incoming requests with mformation content from the time- varymg set of mstantiated content provider objects, wherem changes to the time-varying set of mstantiated content provider objects are supported without a service mterruptmg recompilation or restart of the information service code 29 A computer program product as recited m 28, further compπsmg at least one instantiable encodmg of a content provider object 30 A computer program product as recited m 28, wherem the information service code implements a web portal service, wherein the incoming requests are from web browsers, and wherem the content provider manager service manages pluggable content for the web portal service 31 A computer program product as recited m 28, wherem the information service code implements a desktop service, and wherem the content provider manager service manages pluggable content therefor 32 A computer program product as recited m 28, wherem the at least one computer readable medium is selected from the set of a disk, tape or other magnetic, optical, or electronic storage medium and a network, wireline, wireless or other communications medium

Inventors: LIEBERMAN NOAH, LIEBERMAN, NOAH
Applicants: SUN MICROSYSTEMS INC, SUN MICROSYSTEMS, INC.
Application year: 2000
Main classification: G06F9
IPC codes: G06F17