Jazz Web UI Framework Jazz Platform Architecture Open
Jazz Web. UI Framework
Jazz Platform Architecture – Open Source middleware Jazz Eclipse Client Jazz Web Client Other Clients Jazz Client Extensions Jazz Client Kernel Eclipse Platform HTTP, Web Services, RSS, Atom Jazz Team Server Jabber Web UI Jazz Server Extensions Jazz Server Kernel Eclipse Equinox Apache Tomcat Apache Derby
Deploy OSGI Container in a Servlet Container • OSGI container – servletbridge. jar, jazzservletbridge. jar • core jazz OSGI bundles – JAF, provision. Service, o. Auth Service, etc. . . , they are registered in eclipseconfigurationconfig. ini • Extended Services provisioned by provision. Service
Provision Service • Components can be deployed out of OSGI container. This is achieved by provision service • Load sequence: – – Start Servlet Container OSGI container load registered OSGI bundles Provision Service is activated and look for profiles Update-site defined in profile is loaded and activated
OSGI Framework Control Config web. xml to enable framework control. Uncomment following two init parameters. . . <init-param> <param-name>enable. Framework. Controls</param-name> <param-value>true</param-value> </init-param> <param-name>commandline</param-name> <param-value>-console</param-value> </init-param> Some OSGI command: SS – display the installed bundle list and bundle’s status Start <bundleid> - start the bundle Stop <bundleid> -stop the bundle
Overview JAF Structural Elements Key Dependency Extension net. jazz. ajax Dojo Mozilla Rhino Equinox Server-side Jazz JSON Marshaling
Extension Points Extension-point: net. jazz. ajax. web. Bundles • Marker extension that the JAF uses to discover the subset of server bundles containing JAF-targeted code – As opposed to bundles containing servlets, web services, etc. • Required for JAF extenders <extension point=“net. jazz. ajax. web. Bundles”/>
Extension Points Extension-point: net. jazz. ajax. applications • Reserves a URI (or URI pattern) • Total control over UI • Provides a scoping mechanism for other UI elements (e. g. pages) • Examples: Jazz Project UI, Jazz Server URI (under context Fully-qualified name of Admin UI root) to access application ‘class’ implementation <extension id="admin" point="net. jazz. ajax. applications"> <application alias="/admin" jsclass="com. ibm. team. repository. web. ui. internal. admin. Application" icon="/jazz. ico" status. Handler="com. ibm. team. repository. web. internal. resource. Redirect. Status. Handler" </extension>
Extension Points Extension-point: net. jazz. ajax. pages • Coarse-grained chunk of UI • Run within one or more applications • Contains a set of one or more bookmarkable “actions” • Examples: “Work Items”, “Iteration Plans”, “Reports” within Jazz Project Area application
Extension Points Extension-point: net. jazz. ajax. pages (con’t) Initial action that <extension Parameter to built-in runs if a user clicks point="net. jazz. ajax. pages"> jazz. view. Page action on a page link <page default. Action="com. ibm. team. process. _default. Action 2" id="com. ibm. team. process. Process. Template. Managem ent" name="%Process. Template. Management" widget="com. ibm. team. process. web. ui. internal. ad Displayed in the min. process_templates. Process. Template. Management. Page"> user interface <action Fully-qualified path to id="com. ibm. team. process. _default. Action 2"> widget implementation </action> <action The set of all id="com. ibm. team. process. manage. Templates"> (bookmarkable) actions </action> defined for the page </page> (more on this later) </extension>
Extension-point: application. Page. Bindings Determines in which <extension application(s) which point="net. jazz. ajax. application. Page. Bindings"> pages will show up <application id="com. ibm. team. repository. web. admin"> <page id="com. ibm. team. process. project. Area. List"/> <page id="com. ibm. team. repository. server“ default="true"/> <page id="com. ibm. team. repository. users"/> <page id="com. ibm. team. process. Project. Area. Management"/> <page id="com. ibm. team. process. Process. Template. Management "/> </application> It’s different from the mechanism for </extension> jazz foundation 0. 6, where the page is defined in application. Scope
Inside the JAF Application Startup • 1. 2. 3. – A JAF-based application has a sophisticated bootstrapping sequence optimized for a fast, responsive load Note: This process is invisible to extenders User browses to a JAF-based application (e. g. /web/my. JAFApp) Equinox server-side passes request to a JAF servlet The JAF servlet responds with an HTML page (which uses validation-based caching) with: a. b. c. d. 4. 5. 6. Inlined CSS A <script> tag (using expiration-based caching) pointing to a URI that contains the compressed, concatenated “JAF runtime” (basically Dojo + core JAF functionality) and the relevant application code The extension registry data from all web. Bundles A dojo. add. On. Load function that starts the targeted application The contributed application builds up the basic UI and tells the JAF when it’s done The JAF runs the initial action which, as a side-effect, loads the code for the initial page (based on the URI) The JAF monitors the URI for changes to the URI’s hash value
- Slides: 12