Installing Sametime 7 to a Domino server with a “custom” data-directory

After installing Sametime 7 at a customer running Domino 7.0 server I noticed that a data-directory had been created under the binary directory. The customer has mapped the data-directory onto a separate disk-system using a notes.ini setting.

All the files appeared to have been copied to the correct directories below the data-directory also so the damage wasn’t too severe. Only the help help database in the datahelp-database wasn’t copied correctly. Wierd. I have never experienced that before.

In the screenshot below the window in the back is the “real” data-directory and the circled data-directory on the windows in front is the one the Sametime installation created.

To OR or not to OR…

Many of you might know this already but when fulltext searching a Domino database and you need to OR some arguments together you have two choices for the syntax.

The verbose option (which I have been using so far):

(FIELD xxx CONTAINS yyy) OR (FIELD xxx CONTAINS zzz) OR (FIELD xxx CONTAINS www)

or the much less verbose option that achieves the same as the above example (which I learned today from a co-worker):

FIELD xxx CONTAINS (yyy, zzz, www)

He found the syntax using trial-and-error – go figure!! 🙂

P.S.: It would be really interesting if there is a AND shorthand as well…

Some people wait too long before upgrading

Disclaimer: Before starting I just want to point out that I know that there might be legitimate business reasons for not upgrading sooner.

While going through the Lotus developerWorks forum today (using the RSS main topic feed) I saw a post asking a question regarding ODBC before upgrading their server to version 7 later in the year. The versions used in the setup amazes me:

  • Domino server on 4.6.7a
  • OS of Domino server is NT4 SP5
  • Workstations running Notes 4.6.7a (on Windows XP though)

Here we all are discussing Domino/Notes 6.5+ features and can’t wait for Notes 7.5 / Hannover and then someone is still running 4.6!! On Windows NT4!! Amazing.

If it aint broken – don’t fix it!!

If nothing else it just proves that Domino just runs, and runs, and runs, and runs…

Notes 7.0.1 upgrade woe – background image now tiling

We have a custom application with numerous forms where each form has a small background image that doesn’t tile and hence should sit up in the upper left corner as shown below.


After upgrading to Notes 7.0.1 the image now tiles and hence the form looks a little different. Nothing has changed in the application and the application works perfectly on Notes 7.0 and Notes 6.5.4.

The funny thing is that the issue is consistant across the same set of documents but not all documents displayed through the form seems to be “infected”. The documents in the database are initially copied from user mail databases. During the copy process all fields except the Body and MIME related fields are removed and some new fields are added.

After messing a little around I think it has to do with small differences in the initial MIME to CD conversion at the SMTP server task. It issue seems to be sender specific. Strange…

We have halted the rest of our Notes 7.0.1 deployment.

Update: Seems like I’m not alone in my Notes 7.0.1 problems. I see that Bruce, Vince and Chris also had problems…

No need to wait for Bob to open source his Domino Session PoolManager

In response to “Lessons in Domino, Java, Eclipse and Tomcat” at wissel.net:

Take a look at BurnPC where there is an example of using Jakarta Commons Pool to manage the pool side of things. Jakarta Commons Pool is the base for all pools (incl. the database connection pool) used in Tomcat and is rock solid. The only thing to do is to write the code for the Domino Session part of things which the site also has an example of. You might consider going that way.

The session pool is probably only applicable for remote Corba sessions since there will be some threading issues (due to the use of NotesThread initialization/termination) with the local session which will be difficult (but not impossible) to handle. If you want to use local session I can recommend a servlet filter/ThreadLocal approach (as described here).

Anyone diggin’ Mozart?

The 9 symphonies available for download are:

  • Symphony no. 41
  • Symphony no. 34
  • Symphony no. 40
  • Symphony no. 23
  • Symphony no. 15
  • Symphony no. 36
  • Symphony no. 39
  • Symphony no. 17 (available from February 9th)
  • Symphony no. 35 (available from February 10th)

The symphonies are available in two qualities – 192 kbit/sec and 256Kbit/sec for those where the sound REALLY matters. Two of the symphonies (no. 34 and 36) are also available in MP3-Surround-Sound format.

While the pages are in Danish the download page (which is pretty self-explainatory) can be found here and the podcast feed is here. If you have specific portions you would like to have translated let me know by adding a comment and I’ll be happy to help.

Replication gone terribly wrong… :-)

Sometimes Notes produces some quite interesting dialog boxes – maybe they should really be considered Easter Eggs. They sure make me laugh and lighten up the day.

P.S.: It did take me quite a lot of time to place all 1.328.506.228 databases in the replication queue. But hey – that’s my Tuesday. Good thing it’s billable time…

Beware of those runtime dependencies

Okay, well maybe it wasn’t as “suddenly” – changes had been made to the system. Big changes. The active Tomcat instance had ben upgraded from version 4.1.30 to 5.5.12 which apparently changes some runtime dependencies for Realms. One might have guessed since it’s a jump of two major versions (first 5.0.x and then 5.5.x).

The Realm I created extended org.apache.catalina.realm.RealmBase and used the protected debug variable to control debug information written to the (console) log. After spending a fair amount of time debugging the (more or less) cryptic error the solution to the error caused to be one of those “Doh!”-moments.

The error stacktrace in catalina.out was as follows:

Feb 7, 2006 4:32:35 PM org.apache.catalina.connector.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request processing
java.lang.NoSuchFieldError: debug
        at dk.acme.guide.login.LdapDbRealm.getConnection(LdapDbRealm.java:324)
        at dk.acme.guide.login.LdapDbRealm.authenticate(LdapDbRealm.java:161)
        at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:256)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:674)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:866)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:534)

The Tomcat 5.5.12 source have moved to Jakarta commons logging for all the core classes and hence the debug variable of the org.apache.catalina.realm.RealmBase class had been removed from the source. Since I had not recompiled against the Tomcat 5.5.x source (which one could say is my fault) I hadn’t caught the problem. Changing my code to use commons logging (the log variable) and recompiling against the Tomcat 5.5.x source the problem was solved and i was happy campers once more.

Lessons learned:

  • Beware of dependencies calculated at runtime.
  • Always recompile custom code against the third-party source it depends on when doing major version upgrades.
  • Think McFly, think!!

Note: As an aside the basic way to develop and deploy a Realm in Tomcat 5.5.x is still the same as in Tomcat 4.1.x.

Use SnagIt! as a COM server

Talk about redesigning for reusability: Using SnagIt! as a COM server. One thing is developing it as a COM component, another is exposing and documenting the API.

If you are not familiar with SnagIt! it is a screen capture application for Windows and it is so cool – by far the best screen capture application I have ever used and purchased. If you find yourself doing a lot a screen capturing for documentation etc. I really recommend it.