D2/Webtop Brava Enterprise vs. Linux

For some time Opentext has been offering Brava viewer as part of their product portfolio. This viewer allows to view/mark/annotate/etc documents from D2 or Webtop.

Originally, this software was developed for Windows, so for the components (Brava Server, Job Processor) that needed to access the same data, the decision taken was using a shared folder accessible from both Windows servers. And this is configured on the brava.properties file with the displaylist.cache.root and local.displaylist.cache.root parameters. These parameters should point to an unc path (\\server_name\shared_folder).

Now, there’s a Linux version for Brava that includes Job Publisher, which is the Linux-equivalent for Job Processor (but with less features). If you’re using these components, those variables should point to a local folder on the Linux server that has both the Brava server and Publisher (or a common mounted drive on both Linux servers)

Question here is, can we use the Job Processor on Windows with Brava Server on Linux? The (official) answer is no, but why?

What happens when Brava server receives a request to open a file? Brava server downloads locally the file and it places a request on a queue that is checked by Job Processor/Publisher. This message in the queue contains the (local) location of the file that needs to be processed by the “external” component (Processor/Publisher). And this value is the one specified on those parameters.

So for a “Brava on Windows” setup, the message would indicate the file is on \\server_name\shared_folder\xxxxx, and on Linux it would be a local path: /opt/opentext/brava/dlcache/xxxxx. This means that a Windows/Linux situation configuration won’t work, as the windows server would read a message stating that the file is on /opt/opentext/brava/dlcache and this is not possible on Windows.

So how complex is to “improve” this situation? Well, actually is quite simple. Brava uses a class (com.igc.be.cache.filesystem.FsPublishRequestHandler) to create the requests that will be queued. In this class you can find two methods that fill those paths by doing something like dir.getPath(), which returns the absolute path for the “cached” file.

So, if you’re on Linux, you can use cifs-utils to mount a Windows shared drive as a folder in Linux (/mnt/dlcache), specify that folder on the server.properties file so Brava server can write the files there and then override the FsPublishRequestHandler class replacing the values returned by these dir.getPath() methofs replacing “/” with “\” (for Windows paths) and the local Linux path (/mnt/dlcache) with the shared Windows folder (\\server_name\shared_folder or even the local drive for the Windows server). With this change, the message on the queue will be pointing to a local Windows drive, will be processed by the Job Processor and the result will be accesible by the Brava server on Linux.

Even though this is a quite “simple” approach, it would be best to simply add two additional “remote” parameters to server.propeties and use the same value on the 4 of them if you’re on Windows, or the appropiate ones if using a Windows/Linux combination, so Brava server would use the local ones, and the Processor would use the remote ones.

Hopefully Opentext will implement this some day, as looks like there’s no real technical impediment to provide a parity of features between the Windows/Linux versions (as long as you can deploy at least one Windows server for Job Processor).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.