XPages experiences: number 1 (updated)

It has been my good fortune to finally do some XPages development “in anger” recently, and it pleased me. As a development environment, Domino Designer has certainly come on a chunk since the dark old days of version 7.x. It’s not all good news of course: there are a lot of bugs in there, DDE doesn’t always behave as one would expect, and some stuff simply isn’t implemented yet, but certainly IBM Lotus are going in the right direction. I tend to concur with the view that this could be too little too late, but time will tell, and for now I’m enjoying the work.

Anyway, on to the good ’n’ bad:

@Formula-style server-side Javascript
This rocks. I like very much. If you know the Domino Java API or the Lotusscript object model, then you will pick up XPages’ SSJS object model and syntax very quickly. Code migration should be relatively painless too, if that’s what you want
Pretty much everything is computable
It was always a frustration from Notes 5 on that not all things in Notes could be calculated at run-time. Some stuff just had to be hard-coded. Not any more! Just about everything has that magic blue caret that lets you use code to set values. Hurrah!
This bloody error comes up way too much in Domino Designer (closing and re-opening DDE seems to sort it). And it means very little. The user is urged to examine his or her workspace logs, but they rarely shed any light. If the user can’t do anything about the error being presented, then they shouldn’t be seeing it, as far as I’m concerned.
CLFAD0221E and CLFAD0246E JVM errors resulting in HTTP 500 for users
These are the run-time errors I have really grown to hate. Underlying them is a NullPointerException in the low-level XPages servlet engine. They crop up when previewing XPages in 8.5.2, and I gather the issue is fixed in fix-pack 1. It’s a nasty regression, and renders certain types of XPages useless. I don’t know a full set of steps to reproduce, but in my case I am using an XPage in “headless“ or “agent” mode, whereby some SSJS is used to spit out a stream of XML. Other developers have reported issues with POST requests in web pages, especially when using rich text and file upload controls. YMMV. For me, the work-around is to code on the server (running 8.5.1) or to down-grade DDE to 8.5.1. Alternatively, you could try the tips outlined in this Lotus Developer Domain thread.

So, overall I would say that DDE is a solid start. Lots more work for all of us though!

Update, 17 December 2010: 8.5.2 FP1 has been released, and amongst other things the JVM / HTTP error 500 issue above is fixed (SPR is PHAN89ZB5T):

If a network read error occurs during an http post, the initialization of internal java objects does not complete and a java thread local is not set/reset correctly. This causes all subsequent xpage requests that are processed by that thread to fail and return an http error 500 to the client. Code was added to detect this case and reset the thread local so that subsequent xpages requests do not fail. This regression was introduced in 8.5.2.

Good news!


  1. Question: Why "in anger" ?

    Comment: I'm learning Java development and using Eclipse. Often having similar issues as you describe with new Domino Designer. Unstable bugs.Curt Stone#
  2. Using something “in anger” is a turn of phrase (at least, this side of the pond) and refers to doing something “for real” as opposed to just tinkering.Ben Poole#
  3. @Ben
    Interesting. Love you Brits!
    In that case, at this point, I'm using "in happiness". Just tinkering.Curt Stone#
  4. another really enoying thing is when you delete a control and your XML gets all crazy and start to multiply all your tags ;-)Thomas Adrian #
  5. @1: comes from military english "firing in anger", i.e. against real enemies, not for practice.

    e.g. : "He never fired a shot in anger"

    I don't think it is an US/UK issue, more a civilian/military one.
    Andrew Magerman#
  6. Another update: bad news. The JVM issue is not fixed, having actually done some testing. So much for that SPR. Dang.Ben Poole#

Comments on this post are now closed.


I’m a software architect / developer / general IT wrangler specialising in web, mobile web and middleware using things like node.js, Java, C#, PHP, HTML5 and more.

Best described as a simpleton, but kindly. You can read more here.