IBMTable of Contents
Part One – The Application
Part Two – XPages Advanced 1
Part Three: XPages Advanced Database Separation
Part Four: XPages Advanced Document Wrapper
Part Five: XPages Advanced MVC Controller
Part Six: Use of OpenNTF Domino API
Part Seven: OSGi Application Development Introduction
Part Eight: OSGi JAX-RS REST Access with ODA
Part Nine: OsgiWorlds
Part Ten: Vaadin
Part Eleven: OsgiWorlds Document Wrapper
Part Twelve: Key Date Page
Part Thirteen: Application Structure
Part Fourteen: Calendar View
Thanks to Bruce Elgort for suggesting a glossary would be useful. There are definitely a lot of concepts covered by this series, some of which will be new to some developers. I’m sure this will be added to as the series continues, and any suggestions for terms / technologies / concepts that need further clarification, by all means let me know with comments or on Twitter (@paulswithers).
A server and client framework implementing JAX-RS. Apache Wink is incorporated into XPages Extension Library, so already part of Domino since 8.5.3.
An IBM Websphere Liberty Profile feature developed by Daniele Vistalli that provides a set on jars that add OpenNTF Domino API, Domino-related jars, an HTTP filter and configuration. For more background, see this presentation. The main delaying factor in providing a packaged feature is that the relevant Domino-related jars cannot be included in a third-party solution, but a Domino server license entitles a developer creating a jar that comprises the required Domino jars.
Domino Access Services, an out-of-the-box set of REST access points for documents and views that, once enabled in the server document, can be switched on for individual Forms and Views in a database. A major caveat is that, if source HTML for a web page displays the DAS access point used, a user can bypass the web application by using a freely-available REST Service client. Also, although document-level DAS access points allow validation via Domino’s “compute with form”, if a REST client is used, the validation can be skipped.
xe:dataObject, a new XPages component contributed by the XPages Extension Library. It allows mapping to a Java method for creation of the Java object scoped to an XPage, Custom Control or Panel. It also allows mapping to a Java method for saving the Java object, if required.
Equinox HTTP Service
An automatic part of the Domino server since 8.5.3 sitting on top of Domino’s OSGi layer. It allows lightweight servlets to be deployed via an Eclipse extension point without needing a full Java EE web application. DAS uses this mechanism. The servlet can hook into the in-built Domino authentication. See slide 34 onwards of Paul Fiore’s Lotusphere 2012 presentation.
Expeditor Web Container
An automatic part of the Domino server since 8.5.3 sitting on top of Domino’s OSGi layer. It allows deployment of a Java EE web application as an OSGi plugin. See slide 59 onwards of Paul Fiore’s Lotusphere 2012 presentation. The application can be built with any standard web application framework, e.g. Vaadin.
An Eclipse project that wraps one or more Plugin Project, ready to be deployed via an Update Site Project.
A freely available cloud platform for storing source control repositories and managing issue tracking. The platform was used by OpenNTF prior to installing Atlassian’s tools. There are repositories for XPages Extension Library, OpenNTF Domino API, Key Dates applications which are the basis of this series, OsgiWorlds and CrossWorlds.
A highly scalable, index-free architecture of elements (vertices and edges) comprising key/value pairs. The OpenNTF Domino API implementation builds on the TinkerPop2 framework to allow quick, annoted Java interfaces to control the application schema. The implementation includes in-built vertices, Domino’s in-built security and proxy vertices wrapping standard Domino documents. Future releases will bring out-of-the-box REST access to the graph.
A tried and tested server technology allowing rich client access, incorporating an HTTP server, OSGi web container, scheduled job manager (amgr) XPages (JSF-based extensible web framework), in-built NoSQL database storage, and strong security. The NoSQL database storage can be extended via OpenNTF Domino API to store data with graph database architecture.
IBM Websphere Liberty Profile
A lightweight, easy-to-use, extensible Java EE server which supports Java 8. Tooling is available in Eclipse Marketplace to allow the server to be developed for and managed from Eclipse.
A standard Java API for RESTful web services. JAX-WS can also be used for building web services and client that communicate with XML. JAX-RS is the recommended method of coding REST services, providing easy interaction with JSON objects and HTTP response codes. @Annotations can be used for functionality. Apache Wink can be used for building REST servlets using JAX-RS.
A Java object “managed” by the runtime. This is a standard JSF construct, implemented also in XPages. A variable name chosen by the developer maps to a Java class coded by the developer. The developer also defines the scope in which the object should be stored. The runtime then handles creating / retrieving / destroying an instance of the Java class.
A software project management tool for managing dependencies and build processes. Dependent code does not need to be packaged with source projects. Instead Maven can pull it in when the project is installed. However, Maven is not designed for OSGi projects. Maven will pull collections of jar files directly into the project whereas OSGi generally points to plugins that contribute the relevant jar files.
An open source organisation hosting projects supporting IBM software. It holds projects for the OpenNTF Domino API, Key Dates applications, OsgiWorlds and CrossWorlds (yet to be formally released). OpenNTF now uses Stash for source control and JIRA for issue tracking.
OpenNTF Domino API
A set of OSGi plugins extending Domino’s core Java API and providing additional functionality like transactional processing, listeners, easy email functionality, multi-threaded processing and Graph database access.
A Java project hooking into Eclipse extension points to extend core Domino OSGi functionality. A plugin is usually deployed by adding one or more Plugin Projects to a Feature Project, and one or more Feature Projects to an Update Site Project. The Update Site project can be imported into a Domino database based on the Update Site template, allowing it to be deployed to HTTP when the HTTP task starts without modifying folders in the server’s installation files.
PDE Launch Configuration
A configuration added to a Domino server that means plugins are loaded dynamically from an Eclipse workspace in addition to an Update Site NSFs. This allows easy development of plugins without needing to deploy separately. The plugins work exactly as they would in an Update Site NSF and, because they’re already in the Eclipse workspace, they can be easily debugged.
The Eclipse project that adds functionality to a Domino server. This could provide a servlet, an extension library, provide OSGi commands to the server console, add DOTS tasks and more.
An application running on the Domino server, serving content.
Single Page Application
An application where a single URL is used for the whole application, with sub-pages identified via URL hashes.
An Eclipse extension designed to help plugin development with Maven, with debatable success.
Update Site Database
An NSF that allows easy management of Eclipse features and plugins. Content can be made available for the server by importing from a zip file of an Eclipse Update Site Project or pointing to the Update Site Project’s site.xml. Unlike deployment physically on the server, individual features can be disabled from the NSF or the whole NSF’s features removed without needing to stop the server. Changes are picked up next time the HTTP task is restarted.
Update Site Project
An Eclipse project that, when built, packages up features and plugins for easy deployment.