| Recent Blog Posts
OpenNTF Domino API Database Listeners|
Mon, Jun 22nd 2015 10:00a Paul Withers
Server-Wide Custom XPage Login for XPages Applications|
Fri, Jun 12th 2015 8:19a Paul Withers
Yesterday I was hit by a problem. I was looking to set the login page for a suite of applications to an XPage. Some years ago I had a project and, with much less XPages expertise than now, just added some hacky code to redirect to a login XPage based on a sessionScope variable, so even if the user was authenticated, everything still went through that login page. But this was slightly different. I wanted to override the server-wide login page.
So first it requires a bit of explanatory background
XPages Dialog Control and Partial Refreshes|
Thu, May 28th 2015 9:09a Paul Withers
One of my colleagues has been working on an XPages application and, because of other requirements, was creating his own modal dialog for taking action on a particular entry in a view.
First, it’s worth a bit of background if this is something you’ve needed to do but are not sure how to. My usual method is to add a button to the row in e.g. a Data View, which runs SSJS / Java to set a viewScope variable with the current entry’s NoteID and load the dialog. Because we want to act
Single Copy XPage Design – Some Learning and Why It’s Not For Me|
Tue, May 26th 2015 4:43p Paul Withers
In a recent project I decided to use Single Copy XPage Design (SCXD). This is a seemingly useful technique that is in many ways similar to the concepts underpinning XPages on Bluemix: one database holds the data and it points to another database that contains the XPages-specific design elements – XPages, Custom Controls, StyleSheets, Themes, Images, custom Java code and third-party jars. (At this point, it’s worth stating that although the concept of two NSFs is similar, my understan
IBM Watson: How it Works|
Mon, May 18th 2015 11:08a Paul Withers
The post IBM Watson: How it Works appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
IBM Verse Demonstration|
Mon, May 18th 2015 11:04a Paul Withers
The post IBM Verse Demonstration appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
pde launch configurations and “Xsp Initialization error – Could not load class or methods”|
Fri, May 15th 2015 8:35a Paul Withers
This week I’ve been working with a significantly re-organised repository of OpenNTF Domino API. There were a few issues and it prompted me to finally get round to installing the latest fix packs for Notes and Domino. They had come out just before Engage, where I was speaking, so I chose not to upgrade then and had never got round to it. During the install I had a few problems with installing JVM patches to fix the LS2J issues with the Update Site database and basically broke my Notes Clien
Opening XPages and Custom Controls to Source Pane|
Thu, May 14th 2015 4:17p Paul Withers
These days virtually all my work on XPages and Custom Controls is done in the source pane. But by default when you open the design elements, they open to the Design pane.
Wouldn’t it be great if it opened to the Source pane?
The good thing about the Package Explorer is that by right-clicking on a design element you can change the editor to launch. If you choose the XML Editor, then it launches the normal editor, but with the XML Source pane displayed.
There’s a bit of a trade-off her
[INFOGRAPHIC] Managed Application Hosting for your Domino Application|
Mon, Apr 27th 2015 1:57p Paul Withers
The post [INFOGRAPHIC] Managed Application Hosting for your Domino Application appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
[VIDEO] Managed Application Hosting for your Domino Application|
Mon, Apr 27th 2015 12:42p Paul Withers
The post [VIDEO] Managed Application Hosting for your Domino Application appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
Pushing Changes to Java Agents|
Thu, Apr 23rd 2015 7:36a Paul Withers
In more recent projects I’ve written my agents in Java. Although it meant copying some code across (and in some cases, rewriting it a bit because the agents were not using OpenNTF Domino API), it helped keep muscle memory.
However, I encountered some strange behaviour when refreshing design of the databases. LotusScript agents were fine, XPages were fine, XPages Java code was fine. But changes were not picked up on agents.
It turns out refreshing design does not work for updating Java agen
XOTS: Background and MultiThreaded Tasks the OpenNTF Domino API Way (Part Three)|
Thu, Apr 16th 2015 8:25a Paul Withers
In the previous two parts I covered the background of XOTS, using a basic tasklet to return a result, and using a basic tasklet to run a background task allowing the user to continue working with the application while the background task completed.
In that example the background task did not take a huge amount of time, so it might be worth waiting for the task to complete. But it was iterating over all the states and getting a list of names for contacts in those states. Wouldn’t it be more
XOTS: Background and MultiThreaded Tasks the OpenNTF Domino API Way (Part Two)|
Wed, Apr 15th 2015 9:15a Paul Withers
Yesterday I blogged introducing where we are with XOTS in OpenNTF Domino API, plus a short example about how to create a tasklet and call it. The example was a bit “hello world” – why would you want to call a tasklet to get the current username, when it’s possible and much easier to do that directly in your XPages code?
But it gave the basics of creating a background tasklet and accessing the outcome immediately. So let’s go further with an example that runs a backg
XOTS: Background and MultiThreaded Tasks the OpenNTF Domino API Way (Part One)|
Tue, Apr 14th 2015 8:13a Paul Withers
OpenNTF Domino API has provided a number of significant enhancements. One of the more recent is XOTS. As its name suggests, XOTS brings together XPages and DOTS.
At this point I think it’s worthwhile backtracking and giving some background on DOTS, which many XPages developers will not have utilised. DOTS came in with 8.5.3 and runs within OSGi to allow code that is outside of the NSF to run and return a response, but still interacting with NSFs. The (only officially supported) implementat
Engage, Graphs, CrossWorlds and Vaadin|
Wed, Apr 8th 2015 6:46p Paul Withers
Last week I delivered a session at Engage with Daniele Vistalli entitled Jedi and Sith: OpenNTF Domino API and CrossWorlds. The session covered different aspects related to developments within OpenNTF Domino API over the last year, one of which Nathan T Freeman covered in greater depth during his session entitled The Graph Revolution. It finally brought together a variety of new techniques into a demo application: the Tinkerpop extension within OpenNTF Domino API to bring graph databases to Domi
New Release of Extension Library, Including MapPicker and CollectionPicker|
Thu, Mar 26th 2015 6:30a Paul Withers
This week IBM released the twelfth 9.0.1 release of the Extension Library. It’s great to see the inclusion of mapValuePicker and collectionValuePicker tags. That has proved the completion of a journey almost two years in the making, since I first blogged a tutorial series on doing this, back in May 2013. At the time they were just Java classes used to compute the value of the dataProvider. They were then submitted onto XSnippets, again as Java classes to compute the dataProvider. With some
Managed Beans, Scopes and Lifetimes|
Mon, Mar 23rd 2015 6:27a Paul Withers
A colleague asked me last week about the managed beans and whether a requestScoped bean would be loaded for every request. It’s something I had inadvertently already proved but forgotten. It’s always worth clarifying though and of relevance to more than just managed beans, but anything defined in the faces-config.
All objects defined in the faces-config are defined as a variable name mapping to a class. So for a managed bean like this:
IBM Connections 5 Cumulative Refresh 2 New Functions and Fixes|
Fri, Feb 27th 2015 12:30p Paul Withers
The following information was published by IBM on 24th February 2015. The information is only available in a restricted wiki, so we’re reproducing it here.
IBM Connections 5.0 CR2 includes new functions that may be optionally used or enabled by making changes to the configuration files.
IBM Connections 5.0 CR2 includes new functions that may be optionally used or enabled by making changes to the configuration files. This document lists each function, along with a brief des
Adding Themes to XPages Dojo Charts|
Fri, Feb 27th 2015 9:59a Paul Withers
However, when trying to add a different theme last week, I found the code I have used previously didn’t work. This comprised creating a new instance of dojox.charting.Theme on the fly, assigni
A Case of Case|
Mon, Feb 23rd 2015 11:19a Paul Withers
We all know that XPages URLs are case sensitive. So for a page “Domino_ViewState.xsp”, you cannot use “domino_viewstate.xsp”.
However, what’s not so widely known is that the URLs are only case sensitive after the first character. So both “Domino_ViewState.xsp” and “domino_ViewState.xsp” will work for opening the XPage. However, although both will work, there can then be problems with functionality that uses those values as strings.
One of tho
[INFOGRAPHIC] HCM – Hindsight or Insight?|
Sun, Feb 15th 2015 8:41p Paul Withers
The post [INFOGRAPHIC] HCM – Hindsight or Insight? appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
Scoped Variables, Implicit Variables and Repeat Controls|
Thu, Feb 5th 2015 7:29a Paul Withers
Last week I spoke with Tony McGuckin at IBM Connect. This blog post is explaining a problem I had recently, the cause, the investigation and the resolution two possible resolutions. All relate to content I covered in that session, particularly around the JSF lifecycle. It’s also why the JSF lifecycle is something I always cover at the very start of the Troubleshooting XPages element of the XPages training course I’ve developed and delivered for Intec.
The problem was I ha
IBM ConnectED 2015 Session Slides|
Mon, Feb 2nd 2015 5:10p Paul Withers
Last week I delivered two sessions at ConnectED. Here are the session slides.
MAS103 XPages Performance & Scalability
BP106 From XPages Hero To OSGi Guru: Taking The Scary Out Of Building Extension Libraries
The post IBM ConnectED 2015 Session Slides appeared first on Intec Systems | IBM Business Partner | Collaboration Solutions Provider.
IBM ConnectED (Not Lotusphere) Reflections|
Thu, Jan 29th 2015 12:01p Paul Withers
It’s been a busy week as always. So now the dust has settled here are a few thoughts.
No Matter What Changes, The Community Persists
Our community is an awesome thing, often mentioned with envy by those working outside what was ICS and is now ESS (Enterprise Social Solutions). Over recent years there have been some notable exceptions at our January event. I think we’ll have to wait some months, if not longer, to see the impact of the structural changes within IBM. And IBM are yet to
IBM ConnectED 2015|
Wed, Jan 21st 2015 8:10a Paul Withers
In just a short few days, fellow IBM Champion Tim Malone and myself (Paul Withers) will be heading off to IBM ConnectED. With one less day but just as much to do, it’s likely to be even more hectic than ever. Here’s a summary of things I intend to be involved in.
OpenNTF Domino API / CrossWorlds
One of the key aspects for the week for me is to touch base with the OpenNTF Domino API team and particularly get up to speed with CrossWorlds. CrossWorlds was a new project that came into be
Single Copy XPage Design and Development Best Practice Challenges|
Tue, Jan 6th 2015 5:15a Paul Withers
For the first time I’ve got an application that would benefit from Single Copy XPage Design. The challenge is how to develop that in a way that can best be managed via source control and deployed through development, test and live environments. That’s because, unlike design inheritance, Single Copy XPage Design is set in Domino Designer, in the Application Properties, on the XPages tab.
There are two issues here:
The literal path is stored in the design, so all environments need to
SourceTree and Git/Mercurial: Important Information|
Fri, Dec 19th 2014 8:09a Paul Withers
For anyone who has used the slides from my Show and Tell on source control in January or the subsequent NotesIn9 episode, the recommended Git / Mercurial client was SourceTree. It’s an excellent tool for those who prefer a GUI and runs on Windows and Mac. The advice at the time was to use the embedded Git / Mercurial. For most XPages developers, who were only pushing and retrieving files via SourceTree, that was adequate.
However, overnight I became aware of a security vulnerability with G
XPages OSGi Plugins 3: Configuring for Domino|
Wed, Dec 17th 2014 2:12p Paul Withers
The next step is to configure it for work with Domino. Thankfully, Nathan Freeman has done a great job at making it very easy to do so. I’ll go through the installation first and then explain what’s set. You need to download and install XPages SDK for Eclipse RCP project from OpenNTF into Eclipse. This is an Update Site, something else Domino Developers should already be familiar with. The only difference is that instead of File > Application > Install, you select Help > Ins
XPages OSGi Plugins 2: Installing the IDE (Eclipse)|
Wed, Dec 17th 2014 1:38p Paul Withers
The recommended IDE (Integrated Development Environment) for looking at plugins is Eclipse. You can open them in Domino Designer, but I prefer to keep my development environment clean – I have enough Notes Applications and On Disk Projects there, without confusing the matter further. Plus, if you’re looking to debug them, Eclipse is a better place from which to do that.
Eclipse can be installed on Windows, Linux or MacOS. Its versions are based on alphabetical names, so the latest is
TLS Workaround for Firefox|
Thu, Dec 11th 2014 9:32a Paul Withers
Earlier this week I was prompted to upgrade Firefox and I’m now on 34.0.5. Suddenly I was unable to access some Domino servers and got this message when connecting via https:
Needless to say, this is not going to be a problem with Domino 9.0.1 FP2 IF2. But for some projects I need to develop against older versions of Domino. There is a workaround, though the caveats regarding security should be raised.
In the address bar, type “about:config” and press enter. You will be warne
CKEditor Keyboard Shortcuts|
Wed, Dec 10th 2014 11:24a Paul Withers
One aspect in which browsers are significantly poor compared to rich client applications like the Notes Client is in keyboard shortcuts. WAI-ARIA roles exist for specific areas of a page, like navigation. But browser manufacturers seem to have done nothing to help those who prefer to (or have to) use the keyboard instead of the mouse. Keyboard shortcuts exist, but only for the browser menus, not for content within the browsing container. Similarly I’m not aware of any standard functionalit
XPages OSGi Plugins 1: An Introduction|
Thu, Dec 4th 2014 1:49p Paul Withers
Recently I’ve realised that for all the host of materials there have been on XPages, there are not the same amount of materials for OSGi Plugin investigation. John Dalsgaard and John Cooper have blogged some, but most of the blogs tend to focus on building plugins. Indeed that’s also the focus of my upcoming session with Christian Guedemann at IBM ConnectED.
But that doesn’t tend to be the way I’ve learned things. I tend to look at examples, pick them apart, see what they
Intec’s IBM Champions Renewed|
Thu, Dec 4th 2014 1:44p Paul Withers
It’s great news that both myself and Tim Malone have been renewed as IBM Champions for 2015. I’ve been an IBM Champion every year since 2011, but I still strive to be an active member of the community. My involvement has ramped up significantly since I started blogging in 2009 and it’s a pleasure to work for a company that supports my community involvement so enthusiastically.
Tim may not be as visible to Domino developers or administrators, but he has become more visible speak
Speaking At IBM ConnectED|
Fri, Nov 28th 2014 2:17p Paul Withers
Yesterday I heard that I was accepted for two sessions for IBM ConnectED at the end of January. They are:
Title: XPages Performance and Scalability
Conference/Track: Track 7: Master Classes
Speaker(s): Tony McGuckin; Paul Withers
Abstract: This session by Tony McGuckin and IBM Champion Paul Withers is a deep dive on key aspects of the XPages application development framework which will enable you to tune your applications for optimal performance and scalability for any given use case. Learn h
OpenNTF Domino API: New Release and Serializing Databases / Documents|
Wed, Sep 3rd 2014 6:12a Paul Withers
Nathan has uploaded a new release of OpenNTF Domino API. There are a few significant differences in the upload this time.
Firstly there is a separate install for Designer Client and Domino Server. That’s to minimise the footprint for the server. Those who have used M4.5 may have noticed the Javadoc support was lost, because we were packaging org.openntf.domino as a jar and incorporating that in the plugin. That meant Domino Designer “couldn’t see” the source files, from w
Why My XPages Buttons Are Only Ever “Buttons”|
Fri, Aug 22nd 2014 8:15a Paul Withers
Buttons in XPages are interesting and potentially dangerous elements. They’re dangerous, mainly to less experienced XPages developers, because they have this apparently helpful combo box that immediately attracts the eye for Button type.
Cancel is useful, but to be honest I never set that. All it does, if you look at the source pane, is set immediate=”true”. Based on the level of understanding I’ve got now of tuning events, it makes more sense to set that on the Events
Quick Tip to Quickly Jump To Where You Need to Work|
Mon, Aug 18th 2014 6:12a Paul Withers
Moment of most celebrated enlightenment usually comes from putting together a frustration with a piece of knowledge gleaned for a completely unrelated reason. A couple of days ago I had such an epiphany.
Often when I’m developing I need to check something somewhere else on the XPage or Custom Control. Or I need to add a custom property to a Custom Control, for which I need to position the cursor on the xp:view element of the Custom Control in order to see the Custom Properties panel. But I
10 Reasons All Companies Should Use Open Source|
Fri, Aug 15th 2014 6:12a Paul Withers
After one of my sessions at IBM Connect I was approached by a developer whose company would not use open source. The comment made me despair more than a little and has festered for some time. I’ve used code and projects from OpenNTF for many, many years before subsequently contributing to OpenNTF. Obviously as a contributor to and now director of OpenNTF my personal opinion on whether or not open source should be used is clear. Not allowing your developers to use open source is like expect
The Perils of getColumnValues().get(0)|
Sun, Jul 20th 2014 4:12p Paul Withers
Bill F posed a good question on StackOverflow about the issue of object.recycle and when to use it. It’s un understandable question and one I hit years ago after crashing a server looping through 20,000 documents in a search. I raised a PMR, got a response directing me to technotes on recycling in Java. Searching help, wikis and other places gave me no documentation on recycling in SSJS, which gave me reason to believe I was the first to hit the problem in XPages. So I blogged about it at
XPages Build Project Investigations Improvement|
Wed, Jul 9th 2014 7:15a Paul Withers
Some time ago I wrote about how you have to build twice if you have Build Automatically switched off, then open an application in Designer and make a change – the first build was incremental.
Just to revisit, I would always recommend having Build Automatically switched off unless you’re in an instance of Designer that can only ever have access to a local Domino server or local applications. Building a database remotely is not quick. Building a database has been known to break it if t
Triggering an EventHandler from Another Button|
Tue, Jul 8th 2014 7:15a Paul Withers
Today there was a question on StackOverflow about how to trigger an eventHandler of control A from control B. I knew I’d done it before, but couldn’t remember where and couldn’t find where I’d blogged on it. So here is the way I originally did it and the better way.
The Padawan’s Way
Once you start going to the source pane, you see much more than you do in the Design pane. One of those things you see is that you can click on an xp:eventHandler component and you see
What Happens When An XPage Loads?|
Wed, Jul 2nd 2014 4:11p Paul Withers
There have been a few questions lately on StackOverflow trying to troubleshoot activity during the initial page load. So I thought I’d write a post to try to clarify the process. This certainly helps me pre-empt some functionality and provides an explanation for some of the questions I’ve seen. Using code from Jesse Gallagher’s XPages Scaffolding in projects has really helped give me this understanding, so I’d like to give Jesse a shoutout for his work.
ViewHandlers and C