Latest GreenVulcano instances work on Apache Karaf 4.2.7.

  • Download Karaf 4.2.7 (Select Binary Distribution -> tar.gz)
  • Extract tar.gz into a folder in your file system.
  • /apache-karaf-4.2.7 will be the Karaf home.


Before to run karaf, you have to configure GreenVulcano Maven repository: update /etc/**org.ops4j.pax.url.mvn.cfg** file and add to key **org.ops4j.pax.url.mvn.repositories** following row:

http://mvn.greenvulcano.com/nexus/content/groups/public@id=gv@snapshots, \

Then start Karaf (Open a terminal in #KarafHome /bin and write ./karaf)

Install feature repository and install gvegine

gvadmin@root()> feature:repo-add mvn:it.greenvulcano.gvesb/features/4.1.0/xml/features
gvadmin@root()> feature:install gvengine

To open GV Console go to http://localhost:8181/gvconsole/#/login and log with gvadmin gvadmin

If you want to stop Karaf and GV Console, insert halt into the terminal.

Using the Docker image

You can run GreenVulcano GAIA ESB on Docker simply by typing

docker run greenvulcano/gaia:latest

or specifying more options like:

  • http port mapping (8181)
  • ssh port mapping (8081)
  • environment variable GAIA_FEATURES with the list of features you want to be installed
docker run --name mygaia \
           -p 18181:8181 -p 18101:8101 \
           -e GAIA_FEATURES="gvengine, gvvcl-rest, gvdatahandler, gvhttp" \

To access into Karaf console use ssh:

ssh -p 18101 gvadmin@

The list of karaf features, now also include those of GreenVulcano:

gvadmin@root()> feature:list

To show GreenVulcano features only:

gvadmin@root()> feature:list | grep Green

At the end of this process a folder will be created at **/GreenV**, which contains an empty GreenVulcano configuration. It is possibile to reference a different GreenVulcano configuration, simply by inserting the following line in the file **/etc/it.greenvulcano.gvesb.cfg**


It is necessary to restart karaf to properly load a new configuration.

Plugins and adapters

You can install specific plugins and adapters to extends GreenVulcano GAIA ESB

gvadmin@root()> feature:install gvvcl-rest

For data handler just install following bundle, with start level 96:

gvadmin@root()> feature:install gvdatahandler

To url mapping (httpInboundGateway) install also gvhttp: it is a war file and not a jar file, so don’t forget to add /war suffix:

gvadmin@root()> feature:install gvhttp

For database connections (JNDI, JDBC), refer to OPS4J Pax JDBC framework i.e. :

gvadmin@root()> feature:install pax-jdbc-oracle


gvadmin@root()> feature:install pax-jdbc-mysql

For scheduled sevices install:

gvadmin@root()> feature:install gvscheduler
gvadmin@root()> feature:install gvscheduler-conf

For jms queues intall:

gvadmin@root()> feature:install gvvcl-jms


Export a configuration from Developer studio. Then choose whether to use “Developer Studio & GVConsole” or “Karaf” deploy.

  • Developer Studio & GVConsole – GVConsole -> Configuration – upload configurazion in .zip format – choose a Configuration-Id – press Deploy button
  • Karaf
      gvadmin@root()> gvesb:deploy Configuration-Id /path/to/vulcon/export.zip

    A folder named will be created into /GreenV, which contains GreenVulcano configuration.


You can setup a fine-grained logging service configuring proprerly log4j in karaf. This is a sample configuration in etc/org.ops4j.pax.logging.cfg to logging each service in a single file:

log4j2.property.MASTER_SERVICE = NOOP

# GVESB Appender to produce multiple log files - One per value of MASTER_SERVICE key in thread context map
log4j2.appender.gv.type = Routing
log4j2.appender.gv.name = RoutingGVCore
log4j2.appender.gv.routes.type = Routes
log4j2.appender.gv.routes.pattern = \$\$\\\{ctx:MASTER_SERVICE\}
log4j2.appender.gv.routes.service.type = Route
log4j2.appender.gv.routes.service.appender.type = RollingRandomAccessFile
log4j2.appender.gv.routes.service.appender.name = Rolling-\$\\\{ctx:MASTER_SERVICE\}
log4j2.appender.gv.routes.service.appender.fileName = ${karaf.data}/log/GVCore.\$\\\{ctx:MASTER_SERVICE\}.log
log4j2.appender.gv.routes.service.appender.filePattern = ${karaf.data}/log/${date:yyyy-MM}/GVCore.\$\\\{ctx:MASTER_SERVICE\}.%d{MM-dd-yyyy}.zip
log4j2.appender.gv.routes.service.appender.append = true
log4j2.appender.gv.routes.service.appender.layout.type = PatternLayout
log4j2.appender.gv.routes.service.appender.layout.pattern = [%d{ISO8601}][%-5.5p][%X{SERVICE}/%X{OPERATION}][%X{ID}][%X{bundle.id} - %X{bundle.name}][%t] - %m%n
log4j2.appender.gv.routes.service.appender.policies.type = Policies
log4j2.appender.gv.routes.service.appender.policies.time.type =TimeBasedTriggeringPolicy
log4j2.appender.gv.routes.service.appender.policies.time.interval = 1
log4j2.appender.gv.routes.service.appender.policies.time.modulate = true

# GVESB Logger mapping service name
log4j2.logger.greenvulcano.name = it.greenvulcano
log4j2.logger.greenvulcano.level = DEBUG
log4j2.logger.greenvulcano.appenderRef.gv.ref = RoutingGVCore
# Filtering specific services
#log4j2.logger.greenvulcano.appenderRef.gv.filter.mdc.type = ThreadContextMapFilter
#log4j2.logger.greenvulcano.appenderRef.gv.filter.mdc.operator = or
#log4j2.logger.greenvulcano.appenderRef.gv.filter.mdc.fleet.type = KeyValuePair
#log4j2.logger.greenvulcano.appenderRef.gv.filter.mdc.fleet.key = MASTER_SERVICE
#log4j2.logger.greenvulcano.appenderRef.gv.filter.mdc.fleet.value = (service name)


You can access to GV GAIA ESB v4 JMX infrastructure using jconsole connected to karaf.

Use this url

service:jmx:rmi:///jndi/rmi://<karaf host>:1099/karaf-root

to connect jconsole on a remote instance. All MBean are under the node GreenVulcano