Options for Installing BIRT Runtime from a WAR File

I would like to be able to package the BIRT runtime along with my WAR file, so that there is a single file for distribution. There is no Internet connection at the deployment sites so wont be able to download anything. Semi-technical users will be maintaining the installation so would like to shorten the SOP in case of upgrades or re-installation.

However I would like some advice on how to proceed with this:

  • Add the Runtime to root directory of the installation, I am not sure if the webapp will be able to write to the directory (my Tomcat deployment experience is minimal in this case)

  • Add a module that copies the runtime to the Application Directory, does this make sense? Any examples that I can build upon?

What best practices exist in the wild for bundling 3rd party resources with OpenMRS? I am currently building the WAR file based on the excellent openmrs-disro-platform toolset

Personally I think that’s a bad idea.

Distributing all of the OpenMRS distro in a single WAR makes sense, to simplify things. But if you’re talking about installing multiple applications that have to talk to each other, then you’re now at the point where a proper tool like Ansible is really the way to go, rather than trying to do your scripting in Java code (in an OpenMRS module, no less).

If you’re going to be upgrading these sites multiple times in the long run, and they’re all running linux, then it seems like installing some kind of application/configuration management tool is worth it. Limiting yourself to having to do everything via the OpenMRS WAR seems like it will be limiting and difficult to code against if you have to do anything besides just install and configure OpenMRS modules.

@darius This is a hack to reduce the number of moving parts with BIRT being the only 3rd party dependency as there are legacy reports that have to be generated.

The target platform is Windows machines which will be running in environments with non-technical staff, and multi-use computers (not dedicated servers). There is a possibility of Docker containers, somewhere in the future.

The immediate need if we can get it is to change from a 20 step process to a 5 step one with a separate spike looking at upgrading the Express installer to use latest versions of Java/Tomcat/MySQL + a single WAR file.

All I can say is that I wish you the best of luck. :smile:

In that case I’d suggest you use some windows installer platform that still allows you to distribute a single-file, but that gives you the right toolset for installation and configuration. (I guess this is what you have a spike on.)

I would not try to install BIRT from an OpenMRS module. But you’re already taking on a task that I wouldn’t want to try, so maybe that’s what you have to do…

That said, it would surprise me if a generic windows + java + tomcat installation allows you to sneakily install software on the host computer. I’d expect someone to be protecting against that.

For the sake of completeness, when he talks about installing BIRT, he is simply meaning copying and pasting a folder that has the BIRT runtime. That is all. :slight_smile: