On plug-ins, features, update sites and extension.xml files…

I’m receiving quite a few e-mails asking questions about features, plug-ins, update sites and extension.xml files and how they relate so I thought I would try and clarify things.

Term Description
Plug-in The smallest unit of code you use to create functionality for an Eclipse based client. This is where the actual Java code is.
Feature Used to package and bundle plug-ins together. Features are thin wrappers for plug-ins and is basically a single file called feature.xml. You can bundle multiple plug-ins into a single feature. When installing code into Notes you actually install the features which in turn point to the plug-ins to copy to the client. You can only manage features through the Notes “code UI” (File/Application/Application Management) though you can install code into the platform by simply copying the plug-ins into the appropriate directories in the file system. This is not recommended… πŸ™‚
Update site Update sites are used to deploy features to clients. An update site is simply a directory containing a

  • “plugins”-directory containing a jar-file per plug-in
  • “features”-directory containing jar-file per feature
  • site.xml file describing which features and plug-ins (and in what versions) are available on that particular update site

When an Eclipse based client contacts an update site it reads and parses the site.xml file to discover what’s available there.

Update Sites may be remote or local. A local update site is a directory on a local hard drive or LAN drive with the above structure or a zip-file with the above structure. An update site may also be remote and may be read using HTTP (any server will do) or it may be read using NRPC if you’re using a Notes 8+ client. When using NRPC you use the Update Site Notes database template.

extension.xml These files are used when installing code using the MyWidgets sidebar plug-in and is a shorthand for manually installing code. There is no magic at work here. When you drop an extension.xml file onto the sidebar panel the following steps are performed:

  1. The extension.xml file is parsed and verified to be a valid XML file
  2. The features to be installed are located and a dependency graph is assembled so any required features are identified
  3. The update site address specified in the extension.xml file is contacted and each missing feature in the dependency grapg is attempted installed “bottom up”
  4. The client is restarted

http://aws.amazon.com/eclipse/

Now there is an Eclipse plug-in for interacting with Amazon EC2 services – very cool.

“We want to make the process of building, testing, and deploying applications on Amazon EC2 as simple and efficient as possible. Modern web applications typically run in clustered environments comprised of one or more servers. Unfortunately, setting up a cluster can involve locating, connecting, configuring and maintaining a significant amount of hardware. Once this has been done, keeping the operating system, middleware, and application code current and consistent across each server can add inefficiency and tedium to the development process. In recent years, Amazon Web Services has helped to ease much of this burden, trivializing the process of acquiring, customizing, and running server instances on demand.”

Target platform for Sametime 8.0.0/8.0.1 development

Some days ago I posted on developing drag’n’drop support for Notes 8.0.x and Notes 8.5 Standard clients (see “Show ‘n Tell Thursday: SWT drag’n’drop in Notes 8.0.x and Notes 8.5 (19 February 2009)“). When doing this and you have configured your Eclipse IDE to use Notes 8.5 as the target platform you will be missing the Sametime 8.0.0 libraries and hence some classes wont compile. This is easily solved by copying the necessary Sametime 8.0.0 libraries from a Notes 8.0.x install to a directory to your local machine and adding it to the target platform. Below you can see my target platform where I have the Notes 8.5 libraries and the Sametime 8.0.0 classes (third entry).

<img src="https://wp2.mm.heisterberg.dk/wp-content/uploads/2018/02/sametime800_sametime801_eclipsebuildpath.jpg" /S

JarPlug Eclipse plug-in

The extensible nature of Eclipse is simply amazing. I needed a way to look inside a jar-file which is isn’t on the build path in Eclipse which isn’t “natively” possible with Eclipse. What did I do? I did a quick Google search and 5 minutes later I had JarPlug installed and working. Then after opening this viewpart when selecting any jar-file in the workspace the contents is shown. How nice is that! πŸ™‚

Lotusphere 2009: Preferences in SWT components

On the demos I have done for my Lotusphere 2009 session is a demo on how to use the extension point to extend the preferences dialog box (File/Preferences…) in Notes 8. As always a demo makes it easier to comprehend so download and explore to your heart’s content. Questions are welcome here or at Lotusphere.

com.ls09.bp106.prefs

Otherwise I recommend the Eclipse User Settings FAQ

A couple of reasons why the update site template in Notes 8 is cool!

Here’s a couple of reasons why the Eclipse Update Site template supplied with Notes 8 is a killer template and why it’s preferable to use from a Notes users perspective (get the pun?):

  1. Update Site accessible over NRCP (only by Notes clients) or HTTP.
  2. Easy to host on a Domino server even without running the HTTP task.
  3. Replication to other servers.
  4. Easy to control access with ACL.
  5. Easy overview of categories, plugins and features.
  6. Easy to update the update site URL for all/selected features without rebuilding.

If you’ve been doing plugin/feature packaging in Eclipse you’ll really appreciate item number 6.