Monday, October 30, 2023

Fixing the default settings for a webMethods Integration Server

 

Having installed a webMethods Integration Server, there are a few defaults, that you would like to change. (If you know them.) The you, in that case, would be a person like me, a webMethods developer. In most cases, that's the first thing I do, after the server's first lauch. Let's discuss them.


Extended Settings


In general, it's worth to know all the extended settings. Unfortunately, there are too many of them to know even the majority. However, I found the following to be particularly relevant for me:

  •  watt.server.compile, and watt.server.compile.unicode: These manage, how to launch the Java compiler, if you are editing Java services. In general, the defaults (Something like javac -classpath {0} -d {1} {2}.) are fine. However, note that the {0} is being replaced by the IS classpath. And, that can become extremely long. Too long for a Windows command line.
    My definite recommendation would be, to clear these settings (empty string as the value). That will cause IS to use the Java Compiler API, instead of the command line. In that case, the length of the classpath doesn't matter.
  • watt.server.httplog: By setting this to "common", you will get an additional log file <INSTANCE_DIR>/logs/http.log, which is basically like the Apache server's access log. This is important information, if you want to know, whether a client actually reaches  IS, or not.
  • watt.server.ns.hideWmRoot: If you ever walked through your integration servers packages directory, you might have noticed an unknown package, named WmRoot. If so, you might also have noticed, that this package is not in the list of packages, that the IS Administration UI, and Designer display to you. Well, here's why: By setting this variable to "false", that package becomes visible
    Knowing that package is certainly not necessary. However, sooner or later in your career as a webMethods developer, you'll find yourself wondering "How does one do X?", where X is something, that you would usually do in the IS Administration UI.
    Well, the answer to your question would most likely be something "The UI does this by invoking the service wm.server.whatever:DoX in the WmRoot package.
    Warning: While it is common practice to use services in WmRoot, at least for tasks like "Is Y a valid package, or service name?", you should be aware, that they are not part of the public IS API. In other words: As soon as you start using such services, you are starting to pile up a migration risk for your next upgrade. You are warned!
  • watt.server.ns.lockingMode: Set that to none. It's your development server, so no harm done. If you need to align with coworkers, use a proper version control system, aka Git.

The mess, that is business.

 Typo of the day: "Busimess requirements". Should teach that to my f...ing auto correction. :-)