120 likes | 583 Views
Jazz WebUI Framework. Jazz Eclipse Client. Jazz Client Extensions. Jazz Client Kernel. Eclipse Platform. Jazz Platform Architecture – Open Source middleware. Jazz Web Client. Other Clients. HTTP, Web Services, RSS, Atom. Apache Derby. Jazz Team Server. Jazz Server Extensions. Web UI.
E N D
Jazz Eclipse Client Jazz Client Extensions Jazz Client Kernel Eclipse Platform Jazz Platform Architecture – Open Source middleware Jazz Web Client Other Clients HTTP, Web Services, RSS, Atom Apache Derby Jazz Team Server Jazz Server Extensions Web UI Jabber Jazz Server Kernel Eclipse Equinox Apache Tomcat
Deploy OSGI Container in a Servlet Container • OSGI container – servletbridge.jar, jazzservletbridge.jar • core jazz OSGI bundles – JAF, provisionService, oAuth Service, etc..., they are registered in eclipse\configuration\config.ini • Extended Services provisioned by provisionService
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>enableFrameworkControls</param-name> <param-value>true</param-value> </init-param> <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 Key JAF Structural Elements Dependency Extension net.jazz.ajax Dojo Mozilla Rhino Jazz JSON Marshaling Equinox Server-side
Extension-point: net.jazz.ajax.webBundles Extension Points • 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.webBundles”/>
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 Admin UI URI (under context root) to access application Fully-qualified name of ‘class’ implementation <extension id="admin" point="net.jazz.ajax.applications"> <application alias="/admin" jsclass="com.ibm.team.repository.web.ui.internal.admin.AdminApplication" icon="/jazz.ico" statusHandler="com.ibm.team.repository.web.internal.resource.RedirectStatusHandler"/> </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 runs if a user clicks on a page link Parameter to built-in jazz.viewPage action <extension point="net.jazz.ajax.pages"> <page defaultAction="com.ibm.team.process._defaultAction2" id="com.ibm.team.process.ProcessTemplateManagement" name="%ProcessTemplateManagement" widget="com.ibm.team.process.web.ui.internal.admin.process_templates.ProcessTemplateManagementPage"> <action id="com.ibm.team.process._defaultAction2"> </action> <action id="com.ibm.team.process.manageTemplates"> </action> </page> </extension> Displayed in the user interface Fully-qualified path to widget implementation The set of all (bookmarkable) actions defined for the page (more on this later)
Extension-point: applicationPageBindings Determines in which application(s) which pages will show up <extension point="net.jazz.ajax.applicationPageBindings"> <application id="com.ibm.team.repository.web.admin"> <page id="com.ibm.team.process.projectAreaList"/> <page id="com.ibm.team.repository.server“ default="true"/> <page id="com.ibm.team.repository.users"/> <page id="com.ibm.team.process.ProjectAreaManagement"/> <page id="com.ibm.team.process.ProcessTemplateManagement"/> </application> </extension> It’s different from the mechanism for jazz foundation 0.6, where the page is defined in applicationScope
Inside the JAF JAF Application Startup • 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/myJAFApp) • Equinox server-side passes request to a JAF servlet • The JAF servlet responds with an HTML page (which uses validation-based caching) with: • 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 webBundles • A dojo.addOnLoad 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