INTGeoServer is a server designed to serve diverse geoscience data through various stateless web services. INTGeoServer is particularly well suited to Javascript/HTML5 clients as it uses JSON web services, both as an input and an output. Two often-used clients of INTGeoServer are INTViewer and the HTML5Viewer. Other clients can easily be developed as the JSON protocols that INTGeoServer follows are documented in this web site. As INTGeoServer is lightweight, it can easily be embedded into another application or serve as a microservice as part of a high-reliability/highly redundant cloud architecture.
INTGeoServer is also an extensible platform. Not only you can add your own session management, authentication, error handling or startup routines, but you can also plug your own web services, proprietary data formats or data types. While INTGeoServer is primarily used to serve file-based data, it is versatile enough that it can serve data from various sources, including databases or proprietary geoscience applications.
The implementation of INTGeoServer separates cleanly data access from web services. The data access libraries for file-based datasets can actually be used outside of an INTGeoServer instance. This is useful for example when you need to develop external batches that extract meta data from files, or to generate your own data files.
Web services can be synchronous or asynchronous.
When installing INTGeoServer, you have the option to select which modules you want to use: you can decide to serve only seismic data from the file system, or all data types from all data sources.
INTGeoServer is written in Java, it uses the Servlet technology. INTGeoServer has been tested successfully with Apache Tomcat, GlassFish, WebLogic and Jetty, both on Unix/Linux and Windows operating systems. INTGeoServer doesn't need to run in its own application server instance, it can execute alongside other applications with a minimum of web.xml configuration changes (see Configuration of the web.xml file (v2) and Configuration of the web.xml file (v3)).
INTGeoServer is a highly pluggable server. You can easily write plugins that enhance or modify its behavior. Developers can add their own data types, formats and web services without requiring any modification to the existing code. Default implementations can be overridden without altering any existing code.
Plugins are simple .jar files to be placed in the WEB-INF/lib folder of your application server. To plug or unplug features, INTGeoServer v2 uses a layer.xml file that needs to be placed in the META-INF/services folder of your plugin. INTGeoServer v3 uses registration annotations. No other server configuration step is needed to activate a plugin. The built-in lookup module reconciles all plugged features into one configuration set at startup.
As INTGeoServer uses a pure Java implementation and a simple plugin format, INTGeoServer plugins can be created with any IDE (NetBeans, Eclipse, etc.).
The default implementation provides access to file-based datasets but the architecture is not limited to files. INTGeoServer plugins have been developed to access virtual datasets stored in external databases, such as MongoDB.
See Modules (v2)
Testing web services can be a challenge as it usually involves starting the application server, sending HTTP requests and reading the output. INTGeoServer's architecture makes it easier as inputs and outputs are JSON objects. To create a JUnit test for one of your web services, the test code has basically four steps:
create a JSON object
pass that object to the request handler being tested
retrieve the JSON object returned by this request handler
compare this object with the expected result
These steps do not require any HTTP calls. This is a great productivity feature as developers do not need to wait for their application server to start in their IDE.
You can test both synchronous and asynchronous web services. See an example of asynchronous testing.
The following aspects of the software can also be modified with plugins:
session management (the default implementation requires no session)
authentication (the default implementation requires no authentication)
error logging (the default INTGeoServer v2 implementation doesn't log errors, see Setting up NetBeans for the optional debugerrorhandler.jar file)
how environment variables are detected (the default INTGeoServer v2 implementation uses System.getenv)
what the application does when starting and stopping
When your plugin requires the use of C libraries, there is a standard way you can add automatically your .dll and .so files to your deployment.