JVSserv JPEG2000 server application

About | Features | Screenshots | Download | Documentation


JVSserv is a JPEG2000 virtual slide server application, which utilises the JPIP protocol as its data transfer technique. Although JVSserv can be used with any JPIP client, the usage of JVSview is recommended for full compatibility.

JVSserv is free software for non-commercial purposes, and can be redistributed freely. It is written in C++ and is based on the Kakadu JPEG2000 framework. JVSserv can be run on a Windows 95/98/NT4/2000/XP/Vista environments with 32-bit or 64-bit architecture.


  • Remote image serving over JPIP
  • Graphical user interface for administration
  • Support for multiple simultaneous clients
  • Multiple server clustering (load balancing)



This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for non-commercial purposes, and to redistribute it freely.

Download JVSserv (version 1.0, 9.8.2007)

View version history...


System requirements

JVSserv can be used in all modern PCs running MS Windows 95/98/NT4/2000/XP. The memory and processing requirements depend highly on the simultaneous client connections and cache limit settings. However, we recommend that you use a system that has at least over one GHz processor and 64 MB of RAM.

Usage from graphical interface


When you minimize the window, it moves to the system tray (located usually in the lower right corner of the desktop). From there, you can control the server by pressing the right mouse button over the application's icon. You can switch back to the "full view" by double-clicking the icon.

You can specify a command line parameter -auto_launch if you wish to automatically launch the server (this can be useful, for example, if you wish to start JVSserv during Windows startup).


When using the graphical user interface, you can view detailed descriptions of every fields as tooltips by moving the mouse cursor over them. If you leave a field blank, a default server behaviour is used. For example, leaving the Port number field blank, a default port 2211 is used.

Working directory

Specifies the working directory for the server. The access is restricted to this directory and its subdirectories. The default directory is the executable's own working directory.

Cache directory

Specifies the image cache directory for the server. The default directory is the executable's own working directory.

Log file

Logs server usage and its messages to the specified text file. If you misconfigure the server and it fails to start, you have to use logging in order to be able to view the reason of the failed launch. By default, no logging done is done.

IP address

The IP address the server is bind to. You should not need to use this option unless you wish to serve images from a multi-homed host. IP addresses should be supplied in the familiar period-separated numeric format. By default, the first valid IP address on which the machine is capable of listening is used.

Port number

The port number the server listens to. By default, the port 2211 is used. This is the same port that the JVSview client application uses by default.


A maximum time a client stays connected, expressed in seconds. By default, all clients are automatically disconnected after being continuously connected for a period of 1 800 seconds (30 minutes).

Max kBytes / s

The image data is transmitted at this maximum rate until certain queuing constraints are encountered, if any. By default, this rate is 128 kBytes / s.


Per-client cache size, expressed in megabytes, which may be as low as 0. The server employs a FIFO (First in, First out) cachine strategy to unload compressed data which is not in use once a cache size threshold is exceeded. JVSserv should work well even if the cache size is 0, but the server may become disk-bound if the cache size gets too small. By default, the cache size is 8 megabytes per client.

Max clients

The number of simultaneous client connections. By default, the server permits 10 client connections at once.

Load balancing

The server can use load balancing to delegate incoming client requests to alternate hosts.

In the above example, the machines "host1", "host2", and "host3" are running JVSserv, configured to listen on port 2211. The "*2" and "*4" suffices are host loading indicators. The main server will delegate client requests on a round-robin basis. In the example, on turns one and two, each host would get a request, but on turn three and four, only the "host3" gets a request. After this, the turn counter is reseted.

The main server will perform the service itself only if all delegates refuse to accept the connection (either they are out of service, or have reached their connection capacity).

Usage from command line

JVSserv includes a JVSserv_console.exe file in the install directory, which can be used to gain more control over specific server functionalities. You can view all the commands available by givin the following command:

JVSserv_console.exe -usage


We would like to thank:

  • Dr. David S Taubman, the author of Kakadu JPEG2000 Framework, for laying the foundation for our software.
  • Hans Dietrich and Dundas Software for great MFC code snippets.