JBoss Enterprise Application Platform

Installation of JBoss EAP
Installation of CloverETL Server
Configuration of CloverETL Server on JBoss EAP
[Important]Important

See Application Server in system requirements for currently supported JBoss EAP versions and required Java versions.

If you encounter any problems during the installation, the Possible Issues during Installation section may provide a solution.

Installation of JBoss EAP

  1. Using your credentials, log into the customer portal on the official Red Hat page and download a compatible JBoss EAP version.

  2. Extract the downloaded archive (alternatively, you can download and run the installer and follow the instructions).

  3. Run JBoss EAP.

    • Unix-like systems:

      Run [JBoss_EAP_home]/bin/standalone.sh.

    • Windows system:

      Run [JBoss_EAP_home]\bin\standalone.bat.

  4. Check whether JBoss EAP is running.

    • Open a new tab in your browser and type http://localhost:8080/ in the address bar.

      You should see the JBoss EAP welcome page (otherwise, please consult the JBoss EAP guide):

      JBoss EAP welcome page

      Figure 3.8. JBoss EAP welcome page


Installation of CloverETL Server

  1. Check if you meet the prerequisites:

    • Oracle JDK or JRE is installed (see Java Virtual Machine for the required Java version).

    • JAVA_HOME or JRE_HOME environment variable is set (see Setting up JAVA_HOME).

    • A supported version of JBoss EAP (JBoss AS 7) is installed.

      CloverETL Server is developed and tested with the JBoss EAP 6.2 and 6.4 (JBoss 7) containers. Running the Server with other versions may result in unpredictable behavior.

  2. It is strongly recommended to adjust the default limits for Memory allocation (see the Memory Settings section).

    You can set the minimum and maximum memory heap size by adjusting the "Xms" and "Xmx" JVM parameters and classloaders memory limit by adjusting the "XX:MaxMetaspaceSize" parameter:

    For JBoss EAP standalone mode, follow these steps:

    • Unix-like systems:
      • Edit the [JBoss_EAP_home]/bin/standalone.conf file.

      • Add the following line:

        JAVA_OPTS="$JAVA_OPTS -XX:MaxMetaspaceSize=512m -Xms128m -Xmx2048m" 
        											

    • Windows systems:
      • Edit the [JBoss_EAP_home]\bin\standalone.conf.bat file.

      • JAVA_OPTS="$JAVA_OPTS -XX:MaxMetaspaceSize=512m -Xms128m -Xmx2048m" 
        											

    [Important]Important

    If you use Java 7, change -XX:MaxMetaspaceSize to -XX:MaxPermSize.

  3. Go to the download section of your CloverETL account and download the clover.war (web archive) file containing CloverETL Server for JBoss EAP.

  4. Configure the database connection.

    By default, CloverETL Server uses embedded Derby database; however, such setup is not recommended for production use.

    You can use the database connection provided by JNDI-bound datasource deployed by JBoss EAP. In order to define the datasource, edit the file:

    [JBoss_EAP_home]/standalone/configuration/standalone.xml

    and add the definition of the datasourceinto into the section <subsystem xmlns="urn:jboss:domain:datasources:1.1"> under the element <datasources>. Here is an example of datasource connecting to a MySQL database:

    
    <datasource jndi-name="java:jboss/datasources/CloverETLServerDS"
        pool-name="CloverETLServerDS-Pool" enabled="true">
        <connection-url>jdbc:mysql://localhost:3307/cloverServerDB</connection-url>
        <driver>com.mysql</driver>
        <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
        <pool>
            <min-pool-size>5</min-pool-size>
            <max-pool-size>50</max-pool-size>
            <prefill>true</prefill>
        </pool>
        <security>
            <user-name>root</user-name>
            <password>root</password>
        </security>
        <statement>
            <prepared-statement-cache-size>32</prepared-statement-cache-size>
            <share-prepared-statements>true</share-prepared-statements>
        </statement>
    </datasource>
    <drivers>
        <driver name="com.mysql" module="mysql.driver">
            <driver-class>com.mysql.jdbc.Driver</driver-class>
        </driver>
    </drivers>
    
    
  5. The datasource definition references a module (mysql.driver) with the MySQL JDBC driver. Take the following steps to add the module:

    [Note]Note

    Under JBoss EAP there are more options to setup CloverETL Server's database: along with JNDI-bound data source, it is possible to use embedded Derby database or other supported database specified in CloverETL configuration file.

    In order to be able to connect to the database, you need to define global module so that the driver is available for CloverETL web application - copying the driver to the lib/ext directory of the server will not work. Such module is created and deployed in few steps (the example is for MySQL and module's name is mysql.driver ):

    1. Create directory [JBoss_EAP_home]/modules/mysql/driver/main (note that the directory path corresponds to module name mysql.driver)

    2. Copy the driver mysql-connector-java-5.1.5-bin.jar to that directory and create there file module.xml with following content:

      
      <?xml version="1.0" encoding="UTF-8"?>
      <module xmlns="urn:jboss:module:1.1" name="mysql.driver">
          <resources>
              <resource-root path="mysql-connector-java-5.1.5-bin.jar" />
          </resources>
          <dependencies>
              <module name="javax.api" />
          </dependencies>
      </module>        
                      

    3. Add the module to global server modules: in case of the standalone JBoss EAP server they are defined in [JBoss_EAP_home]/standalone/configuration/standalone.xml . The module is to be added into EE domain subsystem section:

      
      <subsystem xmlns="urn:jboss:domain:ee:1.1">
          <global-modules>
              <module name="mysql.driver" slot="main" /> 
          </global-modules>
          <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
          <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
      </subsystem>
                      

  6. Configure CloverETL Server according to a description in the next section .

  7. Deploy WAR file.

    Copy the clover.war file to [JBoss_EAP_home]/standalone/deployments.

  8. To start the JBoss platform:

    • Unix-like systems:

      Run [JBoss_EAP_home]/bin/standalone.sh.

    • Windows system:

      Run [JBoss_EAP_home]\bin\standalone.bat.

    It may take a couple of minutes for all applications to start.

  9. Check JBoss response and CloverETL Server response.

Configuration of CloverETL Server on JBoss EAP

[Tip]Tip
Default installation (without any configuration) is only recommended for evaluation purposes. For production use, at least a dedicated database and SMTP server configuration is recommended.

For detailed configuration of CloverETL Server, use a properties file. Here you can configure various properties, including the connection to the database, username and password, path to the license file, private properties, number of active threads, clusters and much more (see Chapter 9, List of Properties and Chapter 30, Cluster Configuration). The file can be placed either on a default, or specified location.

Properties File in Specified Location

The properties file is loaded from a location which is specified by the environment/system property clover_config_file or clover.config.file.

    • Create the cloverServer.properties file in a directory readable by JBoss EAP. (If you need an example of connection to any of supported databases, see Chapter 8, Examples of DB Connection Configuration.):

      datasource.type=JNDI
      datasource.jndiName=java:jboss/datasources/CloverETLServerDS
      jdbc.dialect=org.hibernate.dialect.MySQLDialect
      license.file=/home/clover/config/license.dat 
                  

      Do not forget to set correct JDBC dialect according to your database server (Part III, “Configuration”). You can set the path to the license file, too.

    • Alternatively, you can set "JDBC" datasource.type and configure the database connection to be managed directly by CloverETL Server (provided that you have deployed proper JDBC driver module to the server):

      datasource.type=JDBC
      jdbc.url=jdbc:mysql://localhost:3306/cloverServerDB
      jdbc.dialect=org.hibernate.dialect.MySQLDialect
      jdbc.driverClassName=com.mysql.jdbc.Driver
      jdbc.username=root
      jdbc.password=root
      license.file=/home/clover/config/license.dat 
                  

  1. Set the clover.config.file system property (or environment variable).

    It should contain the full path to the cloverServer.properties file created in the previous step.

    The simplest way to set the system property is to edit the configuration file [JBoss_EAP_home]/standalone/configuration/standalone.xml, and to add the following snippet just under <extensions> section:

    <system-properties>
        <property name="clover.config.file" value="C:/jboss-eap-6.2/cloverServer.properties" />
    </system-properties>
  2. Restart the JBoss EAP so that the changes take effect.

  3. Check the CloverETL Server application is running:

    Server's console is accessible at http://localhost:8080/clover by default.

[Note]Note

The JBoss EAP has, by default, enabled HTTP session replication. This requires session serialization that is not supported by CloverETL Server, and produces lots of harmless errors in JBoss's console like this:

10:56:38,248 ERROR [org.infinispan.transaction.TransactionCoordinator] (http-/127.0.0.1:8080-2)
ISPN000188: Error while processing a commit in a two-phase transaction:
java.lang.UnsupportedOperationException: Serialization of HTTP session objects is not supported
by CloverETL Server - disable the session passivation/replication for this web application.
        at com.cloveretl.server.web.gui.e.writeExternal(Unknown Source) [cs.jar:]
        at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:874)
            

To get rid of these errors, disable the session replication. Edit [jboss-home]/standalone/configuration/standalone.xml and comment out whole <cache-container name="web" aliases="standard-session-cache"> block under <subsystem xmlns="urn:jboss:domain:infinispan:1.5"> section.