Skip to content
OMERO image region Vert.x asynchronous microservice server
Branch: master
Clone or download
Latest commit afec676 Apr 29, 2019

AppVeyor status

OMERO Image Region Microservice

OMERO image region and shape mask Vert.x asynchronous microservice server endpoint for OMERO.web.


  • OMERO 5.4.x+
  • OMERO.web 5.4.x+
  • Redis backed sessions
  • Java 8+


The microservice server endpoint for OMERO.web relies on the following workflow::

  1. Setup of OMERO backbone microservice infrastructure within your OMERO server deployment

  2. Setup of OMERO.web to use Redis backed sessions

  3. Configuring the microservice endpoint

  4. Ensure the microservice can communicate with your PostgreSQL instance

  5. Ensure the microservice has read-write access to your OMERO server binary repository

  6. Running the microservice endpoint for OMERO.web

  7. Redirecting your OMERO.web installation to use the microservice endpoint

Build Artifacts

The latest artifacts, built by AppVeyor, can be found here::

Configuring and Running the Server

The image region microservice server endpoint piggybacks on the OMERO.web Django session, OMERO database and binary repository. As such it is essential that as a prerequisite to running the server that your OMERO.web instance be configured to use Redis backed sessions, the microservice be able to communicate with your PostgreSQL instance, and that the binary repository be read-write accessible. Filesystem backed sessions are not supported.

  1. Configure the application by editing conf/config.yaml

  2. Start the server::

     omero-ms-image-region -cluster

Configuring Logging

Logging is provided using the logback library. You can configure logging by copying the included logback.xml.example, editing as required, and then specifying the configuration when starting the microservice server::

cp logback.xml.example logback.xml
JAVA_OPTS="-Dlogback.configurationFile=/path/to/logback.xml" \
    omero-ms-image-region ...

Debugging the logback configuration can be done by providing the additional -Dlogback.debug=true property.

Using systemd

If you are using systemd you can place an appropriately modified version of the included omero-ms-image-region.service into your /etc/systemd/system directory and then execute::

systemctl daemon-reload
systemctl start omero-ms-image-region.service

Running systemctl status omero-ms-image-region.service will then produce output similar to the following::

# systemctl status omero-ms-image-region.service
● omero-ms-image-region.service - OMERO image region microservice server
   Loaded: loaded (/etc/systemd/system/omero-ms-image-region.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2017-06-01 14:40:53 UTC; 8min ago
 Main PID: 9096 (java)
   CGroup: /system.slice/omero-ms-image-region.service
           └─9096 java -Dlogback.configurationFile=/opt/omero/omero-ms-image-region-0.1.0-SNAPSHOT/logback.xml -classpath /opt/omero/omero-ms-image-region-0.1.0-SNAPSHOT/lib/omero-ms-image-region-0.1.0-SNAPSHOT.jar:/opt/omero/omero-...

Jun 01 14:40:53 systemd[1]: Started OMERO image region microservice server.
Jun 01 14:40:53 systemd[1]: Starting OMERO image region microservice server...
Jun 01 14:40:54 omero-ms-image-region[9096]: Jun 01, 2017 2:40:54 PM io.vertx.core.spi.resolver.ResolverProvider
Jun 01 14:40:54 omero-ms-image-region[9096]: INFO: Using the default address resolver as the dns resolver could not be loaded
Jun 01 14:40:55 omero-ms-image-region[9096]: Jun 01, 2017 2:40:55 PM io.vertx.core.Starter
Jun 01 14:40:55 omero-ms-image-region[9096]: INFO: Succeeded in deploying verticle

Redirecting OMERO.web to the Server

What follows is a snippet which can be placed in your nginx configuration, before your default OMERO.web location handler, to redirect both webgateway image region rendering currently used by OMERO.web to the image region microservice server endpoint::

upstream image_region_backend {
    server fail_timeout=0 max_fails=0;


location /webgateway/render_image_region/ {
    proxy_pass http://image_region_backend;

location /webgateway/render_image/ {
    proxy_pass http://image_region_backend;

location /webclient/render_image_region/ {
    proxy_pass http://image_region_backend;

location /webclient/render_image/ {
    proxy_pass http://image_region_backend;

location /webgateway/render_shape_mask/ {
    proxy_pass http://image_region_backend;

Development Installation

  1. Clone the repository::

     git clone
  2. Run the Gradle build and utilize the artifacts as required::

     ./gradlew installDist
     cd build/install
  3. Log in to the OMERO.web instance you would like to develop against with your web browser and with the developer tools find the sessionid cookie value. This is the OMERO.web session key.

  4. Run single or multiple image region tests using curl::

     curl -H 'Cookie: sessionid=<omero_web_session_key>' \
     curl -H 'Cookie: sessionid=<omero_web_session_key>' \

Eclipse Configuration

  1. Run the Gradle Eclipse task::

     ./gradlew eclipse
  2. Configure your environment::

     mkdir conf
     cp src/dist/conf/config.yaml conf/
     # Edit as appropriate
  3. Add a new Run Configuration with a main class of io.vertx.core.Launcher::

     run "" -cluster
  4. Add Java VM arguments::

     -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory -Dhazelcast.logging.type=slf4j

Depending on your environment, clustering arguments such as "-cluster-host" may be required and you also may wish to set up a custom logging configuration as outlined above.

Running Tests

Using Gradle run the unit tests:

./gradlew test


You can’t perform that action at this time.